是否可以阻止WebView缓存/ data/data/???/cache/webViewCache中的数据?我在WebSettings上设置了以下内容,但仍然使用了缓存文件夹:
webSettings.setCacheMode(WebSettings.LOAD_NO_CACHE);
webSettings.setAppCacheEnabled(false);
Run Code Online (Sandbox Code Playgroud)
我注意到缓存文件在应用程序退出时或者当应用程序进入后台时被删除但我更喜欢它们根本不被创建.此外,我想阻止使用/ data/data/???/database中的webview.db和webviewCache.db.我目前删除这样的数据库:
context.deleteDatabase("webview.db");
context.deleteDatabase("webviewCache.db");
Run Code Online (Sandbox Code Playgroud)
这似乎具有所需的效果,并且文件似乎不会再次重新创建以供使用.假设是这种情况可以安全吗?
Mat*_*att 40
这个页面上的注释让我相信他们不希望你有很好的访问缓存:
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);
}
Run Code Online (Sandbox Code Playgroud)
(2)如果你不太关心存储什么,但只想要最新的内容,你可以通过在loadUrl上设置正确的http头来实现这一点(显然你想对你的服务器进行测试) .此外,这仅适用于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);
Run Code Online (Sandbox Code Playgroud)
也许你试过这个,但也可能将WebView Cache的大小设置得很小.我不确定0是否会起作用,所以可能是1:
wv.getSettings().setAppCacheMaxSize(1);
Run Code Online (Sandbox Code Playgroud)
祝好运!
DSo*_*ldo 12
在我的应用程序中(在Android 4.2.2上)我在webview上加载了一个网页,其中包含我可以在运行时更改的图像(我在保留路径时替换图像).马特的解决方案(1)
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
view.clearCache(true);
}
Run Code Online (Sandbox Code Playgroud)
适合我,解决方案(2)不!干杯
| 归档时间: |
|
| 查看次数: |
28203 次 |
| 最近记录: |