背景:项目中用webView加载的一个页面,有一个阅读量的变量,需要实现点击内容回来的时候,本来阅读量在服务器中是已经加一了,但是由于webView的缓存机制从缓存中拿的数据,导致阅读量变成了第一次加载这个页面时候的数据,这个时候就可以在每次这个页面进来的时候都清除缓存就可以实现正常刷新了。 1.webView加载html页面时,他的缓存机制会将我们浏览过的网页url已经网页文件(css、图片、js等)保存到数据库表中
/data/data/package_name/cache/
/data/data/package_name/database/webview.db
/data/data/package_name/database/webviewCache.db
2.webView缓存的5种模式:
LOAD_CACHE_ONLY: 不使用网络,只读取本地缓存数据
LOAD_DEFAULT: 根据cache-control决定是否从网络上取数据。
LOAD_CACHE_NORMAL: API level 17中已经废弃, 从API level 11开始作用同LOAD_DEFAULT模式
LOAD_NO_CACHE: 不使用缓存,只从网络获取数据.
LOAD_CACHE_ELSE_NETWORK,只要本地有,无论是否过期,或者no-cache,都使
3:清除缓存:
public void clearWebViewCache(){
File file = this.getApplicationContext().getCacheDir().getAbsoluteFile();
deleteFile(file);
}
/**
* 递归删除 文件/文件夹
*
* @param file
*/
public void deleteFile(File file) {
Log.i("TAG", "delete file path=" + file.getAbsolutePath());
if (file.exists()) {
if (file.isFile()) {
file.delete();
} else if (file.isDirectory()) {
File files[] = file.listFiles();
for (int i = 0; i < files.length; i++) {
deleteFile(files[i]);
}
}
file.delete();
} else {
Log.e("TAG", "delete file no exists " + file.getAbsolutePath());
}
}
本文介绍了一个项目中遇到的问题:WebView加载页面时因缓存机制导致阅读量显示错误。通过理解WebView缓存机制及不同缓存模式的工作原理,提供了一种解决方案——每次页面加载时清除缓存。
2040

被折叠的 条评论
为什么被折叠?



