CookieSyncManager与CookieManager

  1. 什么是cookie:最简单理解就是由http衍生出来的一种特殊的浏览器的缓存,特点是具有时效性、账户相关性、存储在客户端等。
  2. 作用:作为客户端的用户认证的通行证,比如服务端可以通过cookie来区分到底是哪个用户。
  3. Android中Cookie的管理相关:说到cookie的管理,其实本质上就是数据的存储问题。在早期的cookie是由CookieSyncManager进行管理的,但是在sdk21之后CookieSyncManager被抛弃了,换成了CookieManager来进行管理。
  4. Android中Cookie的存储:目前Android系统WebView是将cookie存储data/data/package_name/app_webview这个目录下的一个叫Cookies的数据中,具体如下图所示:
    这里写图片描述
CookieSyncManager

使用CookieSyncManager同步cookie数据:在早期手机硬件性能比较尴尬的时候,为了提升浏览器的性能,加快cookie的读写,浏览器的cookie是存储在手机的内存上的。但是,当当存储在内存上是不够的,还需要保存到存储器上,这时CookieSyncManager应运而生。借助于CookieSyncManager在内存和存储器之间同步浏览器的cookie。另外CookieSyncManager同步策略是在一个独立的线程里定时进行同步。

  1. cookie开始同步:注意每次同步的时间间隔是5分钟

    //推荐在Activity.onResume()里调用
    CookieSyncManager.createInstance(context);
    CookieSyncManager.getInstance().startSync();

  2. cookie停止同步:

    //Activity.onPause()里调用
    CookieSyncManager.getInstance().stopSync()

  3. cookie立即同步:调用了该方法会立即进行cookie的同步,代码如下:
    //一般是在webview中的onPageFinished(WebView, String)方法进行强制同步
    CookieSyncManager.getInstance().sync()

  4. 删除cookie操作:
    //通常删除cookie的是这样写的
    CookieSyncManager.createInstance(this);
    CookieManager.getInstance().removeAllCookie();
    CookieManager.getInstance().removeSessionCookie();
    CookieSyncManager.getInstance().sync();
    CookieSyncManager.getInstance().startSync();

CookieManager
  1. 使用CookieManager管理cookie:从sdk21之后,webview已经内置了cookie的同步操作了。虽然不再需要关注cookie的同步,但是依然需要掌握删除cookie的操作。

  2. 删除cookie操作:底层实现是异步清除数据库的记录
    //非常简洁
    CookieManager.getInstance().removeAllCookies(null);
    CookieManager.getInstance().flush();

  3. 立即同步:注意到这个flush()方法就是立即同步cookie的操作,与CookieSyncManager中的sync()方法是一样的,其实查看CookieSyncManager的源码就会很清除了

    /**
     * sync() forces sync manager to sync now
     * @deprecated Use {@link CookieManager#flush} instead.
     */
    @Deprecated
    public void sync() {
        CookieManager.getInstance().flush();
    } 
总结

Cookie管理的兼容方案是:在sdk21以下使用CookieSyncManager,否则使用CookieManager。不论使用哪一种方式,其最终的底层实现都离不开对数据库的读写操作,而区别在于实现的策略不同罢了。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值