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到這個消息才去做持久化操作,是 異步實現。