您的位置:首页 > 移动开发

Android Webview清除缓存和Cookie

2014-10-23 10:49 531 查看
最近项目中遇到用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这个网站真心不错,好多问题都在上边得以解决.

上班时间仓促,写的不好请见谅,希望对你有所帮助.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: