Android Webview清除缓存和Cookie

最近项目中遇到用webView显示内容的需求,接到任务后代码如下 

// 更新加载进度条
wv_setmeal_detail.setWebChromeClient(new WebChromeClient() {
public void onProgressChanged(WebView view, int progress) {
pb_webview.setProgress(progress);
if (progress == 100) {
pb_webview.setVisibility(View.GONE);
}
}
});

wv_setmeal_detail.setWebViewClient(new WebViewClient() {
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
Toast.makeText(self, "Oh no! " + description, Toast.LENGTH_SHORT).show();
}
});

// 加载网页
wv_setmeal_detail.loadUrl(url);


嗯,没问题,显示的很好,但是测试时发现一个坑爹的问题,就是退出当前账号换其他账号登录时webview显示的内容还是之前账号的信息,额...怪了.想想肯定是缓存搞的鬼,好,接下来就是清除缓存.


网上各种google baidu,发现很多方法都不管用.做法一般如下

1.websettings设置不适用缓存

 mCurrentWebView.clearCache(true);
   mCurrentWebView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);

其实不管用...

2.webview显示时会自动生成如下文件   data/data/<包名>/app_webview  

然后就是循环遍历删除该文件下的内容

/**
* 清除WebView缓存
*/
public void clearWebViewCache() {


// WebView 缓存文件
File appCacheDir = new File(DATA_BASE_PATH + getPackageName() + APP_WEBVIEW_PATH);


if (appCacheDir.exists()) {
deleteFile(appCacheDir);
}
}


/**
* 递归删除 文件/文件夹

* @param file
*/
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();
}
}

发现推出后马上切换行,过一分钟左右还是不行.



就郁闷了...到底缓存数据存在哪了呢...

最后google在stackoverflow上看到一篇文章,问题得以解决.原来是要清除webview的cookie才能彻底把缓存清除

public void clearWebViewCache() {
// 清除cookie即可彻底清除缓存
CookieSyncManager.createInstance(self);
CookieManager.getInstance().removeAllCookie();
}


附上两篇文章地址

http://stackoverflow.com/questions/2465432/android-webview-completely-clear-the-cache

http://www.devdiv.com/forum.php?mod=viewthread&tid=116641


吐槽一下 百度真的搜出来是一大堆没用的东东,google是王道啊,stackoverflow这个网站真心不错,好多问题都在上边得以解决.

上班时间仓促,写的不好请见谅,希望对你有所帮助.



  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值