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这个网站真心不错,好多问题都在上边得以解决.
上班时间仓促,写的不好请见谅,希望对你有所帮助.
// 更新加载进度条
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这个网站真心不错,好多问题都在上边得以解决.
上班时间仓促,写的不好请见谅,希望对你有所帮助.
相关文章推荐
- Android Webview清除缓存和Cookie
- Android中清楚Cookie和WebView的缓存
- Android WebView (1)清除缓存
- Android中清楚Cookie和WebView的缓存
- Android开发——webView的缓存清除和将缓存存储到sd卡
- iOS WebView 清除缓存和Cookie
- 关于Android之WebView加载网页缓存和清除问题
- Android进阶篇-清除WebView的缓存
- Android清除webview缓存
- android清除WebView使用的缓存的学习记录
- ios webview清除缓存Cookie
- android WebView清除缓存
- Android中清楚Cookie和WebView的缓存
- android开发中webview保存cookie问题的解决
- Android高手进阶教程(二十一)---Android WebView的缓存!!!
- 清除WebView的Cookie
- Android WebView的缓存!!!
- android WebView 与 HttpClient Cookie
- android开发中webview保存cookie问题的解决
- android WebView 与 HttpClient Cookie