SyncAdapterで同期時にSyncアイコンを表示したい。 出来ればすぐに。
SyncAdapterを実装してrequestSync()したときに、通知領域にSyncアイコンが表示される条件。
extras.putBoolean(ContentResolver.SYNC_EXTRAS_MANUAL, true);
してから、
ContentResolver.requestSync(mAccount, AUTHORITY, extras);
とすればいい。
SYNC_EXTRAS_MANUALを使わないと、
authorityにCALLER_IS_SYNCADAPTER = trueが付加されててかつ、
ContentResolver経由でローカルのDBを更新している処理が一定時間以上かかると
適当なタイミングで表示される。
これだとリモートデータにアクセスしているときや、ローカルデータへのアクセス時間が短いときはSyncアイコンが表示されない。
リファレンスのどこにもこんな説明はないようだが。。。
ま、そんな感じ。
extras.putBoolean(ContentResolver.SYNC_EXTRAS_MANUAL, true);
してから、
ContentResolver.requestSync(mAccount, AUTHORITY, extras);
とすればいい。
SYNC_EXTRAS_MANUALを使わないと、
authorityにCALLER_IS_SYNCADAPTER = trueが付加されててかつ、
ContentResolver経由でローカルのDBを更新している処理が一定時間以上かかると
適当なタイミングで表示される。
これだとリモートデータにアクセスしているときや、ローカルデータへのアクセス時間が短いときはSyncアイコンが表示されない。
リファレンスのどこにもこんな説明はないようだが。。。
ま、そんな感じ。
コメント
コメントを投稿