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

Android中的Cookies和WebView缓存

2016-12-16 09:18 330 查看
原来以为两个是一样的概念,后来做需求发现不是的,webview不加载缓存时,却加载了用户信息记录,后来发现是没有清除cookies。

一、清除cookie

public static void clearCookies(Context context) {
@SuppressWarnings("unused")
CookieSyncManager cookieSyncMngr =
CookieSyncManager.createInstance(context);
CookieManager cookieManager = CookieManager.getInstance();
cookieManager.removeAllCookie();
}


二、清除特定url的Cookies

/**
* 同步一下cookie
*/
public static void synCookies(Context context, String url) {
CookieSyncManager.createInstance(context);
CookieManager cookieManager = CookieManager.getInstance();
cookieManager.setAcceptCookie(true);
cookieManager.removeSessionCookie();//移除
cookieManager.setCookie(url, cookies);//指定要修改的cookies
CookieSyncManager.getInstance().sync();
}


 

二、清除webview缓存,要没不加载缓存,要么就直接删除目录下的db

在项目中经常会使用到WebView 控件,当加载html 页面时,会在/data/data/package_name目录下生成database与cache 两个文件夹。请求的url 记录是保存在WebViewCache.db,而url 的内容是保存在WebViewCache
文件夹下..

//优先使用缓存:
WebView.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
//不使用缓存:
WebView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
// clear the cache before time numDays
private int clearCacheFolder(File dir, long numDays) {
int deletedFiles = 0;
if (dir!= null && dir.isDirectory()) {
try {
for (File child:dir.listFiles()) {
if (child.isDirectory()) {
deletedFiles += clearCacheFolder(child, numDays);
}
if (child.lastModified() < numDays) {
if (child.delete()) {
deletedFiles++;
}
}
}
} catch(Exception e) {
e.printStackTrace();
}
}
return deletedFiles;
}


三、两者结合使用就是

public void clearCache(Context context) {
CookieSyncManager cookieSyncMngr = CookieSyncManager.createInstance(context);
CookieManager cookieManager = CookieManager.getInstance();
cookieManager.removeAllCookie();
context.deleteDatabase("webview.db");
context.deleteDatabase("webviewCache.db");
context.deleteDatabase("webviewCookiesChromium.db");
context.deleteDatabase("webviewCookiesChromiumPrivate.db");
//WebView 缓存文件
File webviewCacheDir = new File(context.getCacheDir().getAbsolutePath()+"/webviewCacheChromium");
//删除webview 缓存目录
if(webviewCacheDir.exists()){
//            deleteFile(webviewCacheDir);
}
}


在项目中经常会使用到WebView 控件,当加载html 页面时,会在/data/data/package_name目录下生成database与cache 两个文件夹。请求的url 记录是保存在WebViewCache.db,而url
的内容是保存在WebViewCache 文件夹下..
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息