android webview清理缓存

最近写了个Android项目 遇到了一个问题就是webview 的缓存问题 每次进入程序webview都用缓存。接下来说说这问题是如何解决的。


首先了解下缓存的分类

页面缓存:

加载一个网页时的html、JS、CSS等页面或者资源数据,这些缓存资源是由于浏览器的行为而产生,开发者只能通过

配置HTTP响应头影响浏览器的行为才能间接地影响到这些缓存数据。而缓存的索引放在:/data/data/<包名>/databases

对应的文件放在:

/data/data/package_name/cache/webviewCacheChromunm下


数据缓存:

分为AppCache和DOM Storage两种

AppCache:

我们能够有选择的缓冲web浏览器中所有的东西,从页面、图片到脚本、css等等。

尤其在涉及到应用于网站的多个页面上的CSS和JavaScript文件的时候非常有用。其大小目前通常是5M。

在Android上需要手动开启(setAppCacheEnabled),并设置路径(setAppCachePath)和容量

setAppCacheMaxSize),而Android中使用ApplicationCache.db来保存AppCache数据!

DOM Storage:

存储一些简单的用key/value对即可解决的数据,根据作用范围的不同,有Session Storage和Local Storage两种,分别用于会话级别的存储(页面关闭即消失)和本地化存储(除非主动 删除,否则数据永远不会过期)在Android中可以手动开启DOMStorage(setDomStorageEnabled), 设置存储路径(setDatabasePath)Android中Webkit会为DOMStorage产生两个文件

(my_path/localstorage/http_blog.csdn.net_0.localstorage

和my_path/Databases.db)



在我们实际开发中也会出现其他情况。

Android webview清理缓存_缓存

清理缓存

我看了很多博客试了很多方法都没有成功,废话不多说,来看代码



public void deleteFile(File file) { 
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 {
System.out.println("delete file no exists ");
}
}

调用deleteFile方法



File webviewCacheDir = new File(getActivity().getCacheDir().getParent()); //缓存路径
//删除webview 缓存目录
if(webviewCacheDir.exists()){
deleteFile(webviewCacheDir);
}
android.os.Process.killProcess(android.os.Process.myPid());


注意:

android.os.Process.killProcess(android.os.Process.myPid());

这句代码是杀死程序。为什么要加这句代码呢?原因是Local Storage缓存想要清除只清理缓存文件是远远不够的必须要杀死进程才可以。

希望对大家的开发有帮助