Android cookie 之异步存储
android Cookie保存到database是异步实现的。
CookieSyncManager继承 WebSyncManager,
是负 责cookie从内存到持久存储的
类,cookie 的同步可以分为自动同步和强制同步两种.
1. 自动同步
自动同步
是每过5分钟同步一次,是开启一个线程来负责ram到
database的同步,这个线程维护消息队列,线程启动时发一个delay时间为 SYNC_LATER_INTERVAL(5min)的 消息
Message msg =
mHandler.obtainMessage(SYNC_MESSAGE);
mHandler.sendMessageDelayed(msg, SYNC_LATER_INTERVAL);
每次处理完这个消息会添加另外一个delay为5min的消息。
2.强制同步
强制同步调用sync()接口
public void sync() {
if (DebugFlags.WEB_SYNC_MANAGER) {
Log.v(LOGTAG, "*** WebSyncManager sync ***");
}
if (mHandler == null) {
return;
}
mHandler.removeMessages(SYNC_MESSAGE);
Message msg =
mHandler.obtainMessage(SYNC_MESSAGE);
mHandler.sendMessageDelayed(msg,
SYNC_NOW_INTERVAL);
}
sync方法是触发一个delay为100毫秒的消息。
不管哪种,cookie保存是通过另外一个线程的Handler来实现的,需要Looper到这个消息才去做持久化操作,是
异步实现。