背景:项目中用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()); } }