Gra*_*eme 9 android caching webview
我的应用程序中有一个非常简单的WebView,它显示"欢迎"对话框.
我通过语言发送服务器响应,如下所示:
Map<String, String> noCacheHeaders = new HashMap<String, String>(2);
noCacheHeaders.put("Pragma", "no-cache");
noCacheHeaders.put("Cache-Control", "no-cache");
noCacheHeaders.put("Accept-Language", Locale.getDefault().toString());
mWebView.loadUrl("www.fake.com", noCacheHeaders);
Run Code Online (Sandbox Code Playgroud)
这很好 - 但是,当我更改设备语言时,我希望WebView语言也能改变,我可以看到它的值"Accept-Language"调试时正在改变但是WebView中的内容没有改变.我已经找到了停止缓存的方法,我将在下面介绍.在语言更改后,它们都不会使网站加载不同.
为了确保服务器不是缓存问题,我确保在清除"应用程序数据"并重新启动后WebView内容发生更改.非常确凿的证据表明App正在存储WebView数据.
所以,我已经遵循了下面列出的许多不同的建议.其中没有一个实际上是在改变我的内容WebView:
从这里开始导致崩溃:
mWebView.clearCache(true);
mContext.deleteDatabase("webview.db");
mContext.deleteDatabase("webviewCache.db");
Run Code Online (Sandbox Code Playgroud)
这就是它自己(在loadURL之前,在它之后,onProgress = 100):
mWebView.clearCache(true);
Run Code Online (Sandbox Code Playgroud)
从这里开始:
mWebView.getSettings().setAppCacheMaxSize(0);
Run Code Online (Sandbox Code Playgroud)
我也试过这个:
mWebView.getSettings().setAppCacheEnabled(false);
Run Code Online (Sandbox Code Playgroud)
所有都导致相同的行为.将设备语言从德语切换为英语时,我的WebView仍保留德语网站内容.
以下是所有代码:
Map<String, String> noCacheHeaders = new HashMap<String, String>(2);
noCacheHeaders.put("Pragma", "no-cache");
noCacheHeaders.put("Cache-Control", "no-cache");
noCacheHeaders.put("Accept-Language", Locale.getDefault().toString());
mWebView.getSettings().setAppCacheEnabled(false);
mWebView.clearCache(true);
mWebView.getSettings().setAppCacheMaxSize(0);
mWebView.setWebChromeClient(new WebChromeClient() {
public void onProgressChanged(WebView view, int progress) {
mProgress.setProgress(progress);
try {
getActivity().setProgress(progress);
if(progress == 100) {
mProgress.setVisibility(View.GONE);
mWebView.clearCache(true);
}
} catch(Exception e) {
e.printStackTrace();
}
}
});
mWebView.loadUrl("www.fake.com", noCacheHeaders);
mWebView.clearCache(true);
Run Code Online (Sandbox Code Playgroud)
可重复的步骤:
muk*_*esh 10
CookieSyncManager.createInstance(this);
CookieManager cookieManager = CookieManager.getInstance();
cookieManager.removeAllCookie();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6790 次 |
| 最近记录: |