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