Android WebView之缓存清理

Android中使用混合模式开发的应用中,H5页面的缓存有时候需要手动强制清理,使用到强制清理的场景有两个:

  1. 用户手动点击清理缓存,此时应该清理客户端网络框架请求缓存、图片缓存等后,还应该清理Webview的缓存
  2. H5页面有错误,需要通过紧急清理缓存开关强制清理Webview缓存

    清理缓存实现

WebView缓存结构这里就不展开介绍了,不过以下实现估计一目了然,基本也知道WebView中有几块缓存了:

这里提供一种混合清理的方式,当App中接入了腾讯X5内核浏览器时,清理X5的缓存是必须的,但是同时也不要忘记清理原生浏览器产生的缓存:

1
2
3
4
5
6
7
8
9
10
11
12
13
//安卓自带浏览器内核
android.webkit.CookieSyncManager.createInstance(App.AppContext);
android.webkit.CookieManager cookieManager = android.webkit.CookieManager.getInstance();
cookieManager.removeAllCookie();
//X5浏览器内核
CookieSyncManager.createInstance(App.AppContext);
CookieManager x5cookieManager = CookieManager.getInstance();
x5cookieManager.removeAllCookie();
//删除浏览器相关数据库
App.AppContext.deleteDatabase("webview.db");
App.AppContext.deleteDatabase("webviewCache.db");
new WebView(App.AppContext).clearCache(true);
new com.tencent.smtt.sdk.WebView(App.AppContext).clearCache(true);
文章作者: Kevin Wu
文章链接: https://kevinwu.cn/p/829cdd91/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 KevinWu的博客
支付宝打赏