gpt4 book ai didi

android - 防止 Android WebView 缓存数据

转载 作者:IT老高 更新时间:2023-10-28 23:27:24 25 4
gpt4 key购买 nike

是否可以防止 WebView 在/data/data/???/cache/webViewCache 中缓存数据?我在 WebSettings 上设置了以下内容,但仍使用缓存文件夹:

webSettings.setCacheMode(WebSettings.LOAD_NO_CACHE);
webSettings.setAppCacheEnabled(false);

我注意到缓存文件在应用程序退出或应用程序进入后台时被删除,但我更希望根本不创建它们。此外,我想阻止使用/data/data/???/database 中的 webview.db 和 webviewCache.db。我目前像这样删除数据库:

context.deleteDatabase("webview.db");
context.deleteDatabase("webviewCache.db");

这似乎具有预期的效果,并且文件似乎不会再次重新创建以供使用。假设是这种情况是否安全?

最佳答案

这个页面上的注释让我相信他们不希望你能很好地访问缓存:

http://developer.android.com/reference/android/webkit/CacheManager.html

据我所知,(至少)有两种方法可以保留缓存。我没有在应用程序中写过任何这些,所以不能保证:

(1) 每次您的 WebView 完成一个页面时,清除缓存。在你的 WebViewClient 中是这样的:

@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
view.clearCache(true);
}

(2) 如果您不太关心存储的内容,而只想要最新的内容,则可以通过在 loadUrl 上设置正确的 http header 来实现这一点(显然您希望针对这一点进行测试你的服务器)。此外,这仅适用于 Android API 8+

    Map<String, String> noCacheHeaders = new HashMap<String, String>(2);
noCacheHeaders.put("Pragma", "no-cache");
noCacheHeaders.put("Cache-Control", "no-cache");
view.loadUrl(url, noCacheHeaders);

也许你试过这个,但也许也将 WebView 缓存大小设置为小一些。我不确定 0 是否有效,所以可能是 1:

wv.getSettings().setAppCacheMaxSize(1);

祝你好运!

关于android - 防止 Android WebView 缓存数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7537701/

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