gpt4 book ai didi

android - 清除 WebView 缓存的 101 种方法 - 所有这些都不起作用

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:32:00 26 4
gpt4 key购买 nike

我的应用程序中有一个非常简单的 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);

这工作正常 - 但是,当我更改设备语言时,我希望 WebView 语言也更改,我可以看到 "Accept-Language" 在调试时正确更改,但 WebView 中的内容没有更改。我一直在寻找停止缓存的方法,如下所述。它们都不具有在语言更改后使网站加载不同的效果。

为确保服务器不是缓存问题,我确保在清除“应用程序数据”并重新启动后 WebView 内容发生变化。该应用程序正在存储 WebView 数据的非常确凿的证据。

因此,我遵循了下面列出的许多不同建议。没有一个真正改变我的 WebView 的内容:

来自 here导致崩溃:

mWebView.clearCache(true);
mContext.deleteDatabase("webview.db");
mContext.deleteDatabase("webviewCache.db");

仅此而已(在 loadURL 之前、之后和 onProgress=100):

mWebView.clearCache(true);

来自 here :

mWebView.getSettings().setAppCacheMaxSize(0);

我也试过这个:

mWebView.getSettings().setAppCacheEnabled(false);

所有结果都相同。当我的 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);

可重复的步骤:

  1. 安装应用
  2. 打开 Webview - 英文内容。
  3. 强行停止应用
  4. 将设备语言更改为德语
  5. 打开 App & WebView - 英文内容。
  6. 强行停止应用
  7. 清除应用数据
  8. 打开 App & WebView - 德语内容。

最佳答案

 CookieSyncManager.createInstance(this);         
CookieManager cookieManager = CookieManager.getInstance();
cookieManager.removeAllCookie();

关于android - 清除 WebView 缓存的 101 种方法 - 所有这些都不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13009534/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com