Android中的Cookies和WebView缓存


原来以为两个是一样的概念,后来做需求发现不是的,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 文件夹下..
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值