Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/181.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android WebView,从缓存加载并尝试刷新_Java_Android_Android Webview_Swiperefreshlayout - Fatal编程技术网

Java Android WebView,从缓存加载并尝试刷新

Java Android WebView,从缓存加载并尝试刷新,java,android,android-webview,swiperefreshlayout,Java,Android,Android Webview,Swiperefreshlayout,我正在尝试创建一个小应用程序,加载网页并将其存储在缓存中。刷卡刷新时,它必须尝试更新,但如果无法访问internet,则应保持当前版本 目前,我已经有了“刷卡强制刷新”和“从缓存加载”的功能,但似乎无法理解如何“尽可能尝试刷新” 基于forWebSettings.LOAD\u CACHE\u ELSE\u NETWORK: 在缓存资源可用时使用缓存资源,即使它们已经可用 期满。否则,请从网络加载资源 因此,视图始终从缓存加载 您可以使用以下方法: 1.检查连接: private boolean

我正在尝试创建一个小应用程序,加载网页并将其存储在缓存中。刷卡刷新时,它必须尝试更新,但如果无法访问internet,则应保持当前版本

目前,我已经有了“刷卡强制刷新”和“从缓存加载”的功能,但似乎无法理解如何“尽可能尝试刷新”

基于for
WebSettings.LOAD\u CACHE\u ELSE\u NETWORK

在缓存资源可用时使用缓存资源,即使它们已经可用 期满。否则,请从网络加载资源

因此,视图始终从缓存加载

您可以使用以下方法: 1.检查连接:

private boolean isNetworkConnected() {
    ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);

    return cm.getActiveNetworkInfo() != null;
}
  • 在设置之前而不是设置之前:

    WebSettings webSettings = myWebView.getSettings();
    webSettings.setJavaScriptEnabled(true);
    webSettings.setAppCacheEnabled(true);
    webSettings.setAppCachePath(getBaseContext().getCacheDir().getPath());
    
    webSettings.setCacheMode(isNetworkConnected()?WebSettings.LOAD_NO_CACHE: WebSettings.LOAD_CACHE_ONLY);
    
  • 在滑动刷新时,您可以执行相同的操作:

    swipeRefreshLayout.setOnRefreshListener(
            new SwipeRefreshLayout.OnRefreshListener() {
                @Override
                public void onRefresh() {
                    if(isNetworkConnected()){
                        ...
                        myWebView.reload();
                    } else {
                          //Do something for non-connectivity
                    }
            }
        });
    

  • “如果可能,尝试刷新”是什么意思?你是说稍后重试?在启动时的这一刻,它将从缓存中加载,如果缓存不存在,它将从网络中加载。我希望这样,当它加载时,它将从缓存中加载。如果有网络访问,则尝试获取页面的更新版本。如果冷却成功,则加载它。如果不是太坏,下次你的使用方法是错误的,祝你好运。没有必要每次都从缓存中加载网站。通常,缓存是一件好事,解决方案是使用:webSetting.setCacheMode(webSetting.LOAD\u默认值)
    swipeRefreshLayout.setOnRefreshListener(
            new SwipeRefreshLayout.OnRefreshListener() {
                @Override
                public void onRefresh() {
                    if(isNetworkConnected()){
                        ...
                        myWebView.reload();
                    } else {
                          //Do something for non-connectivity
                    }
            }
        });