我在AccountManager中有十几个帐户,当添加新帐户时,Android 开始同步所有帐户。由于它们很多,至少需要 15 秒才能开始同步。
当我添加新帐户时,有什么方法可以停止/取消所有帐户的同步,这样我就可以ContentResolver.requestSync
在那个时候调用并开始只同步我的帐户?
谢谢,
亚历山大·伊利奇。
我在AccountManager中有十几个帐户,当添加新帐户时,Android 开始同步所有帐户。由于它们很多,至少需要 15 秒才能开始同步。
当我添加新帐户时,有什么方法可以停止/取消所有帐户的同步,这样我就可以ContentResolver.requestSync
在那个时候调用并开始只同步我的帐户?
谢谢,
亚历山大·伊利奇。
Sync 旨在作为后台服务。在同步开始之前 15 秒似乎是一个完全合理的延迟,特别是当添加一个新帐户(应该?)是一个非常罕见的事件时。另一个想法是,如果您有十几个活跃帐户,您可能会尝试考虑如何减少该数量 - 毕竟您有这么多帐户吗?多个帐户同时站点?
您是否担心首次设置响应能力,或者您是否有一些需要您经常实际添加和删除帐户的用例?
如果是后者,只需ContentResolver.setIsSyncable()
查看给定内容/帐户对的打开和关闭。如果为 false,帐户页面上的复选框将显示为灰色,并且不会发生同步。这可能比创建和销毁帐户更能满足您的需求。
也就是说,您可以尝试加快速度。
手动调用ContentResolver.requestSync (Account account, String authority, Bundle extras)
并查看 ContentResolver 中定义的 extras 值。你可以试试SYNC_EXTRAS_MANUAL
和SYNC_EXTRAS_EXPEDITED
。
一个更极端的情况(如果你搞砸了,这可能真的会惹恼你的用户......)是保存主同步的当前状态,然后显式禁用主同步(ContentResolver.setMasterSyncAutomatically(boolean sync))并推送同步完成后,同步SYNC_EXTRAS_MANUAL
覆盖,然后将主同步恢复到其初始状态。
问题是如何做到这一点......我认为,您需要从应用程序中的帐户创建代码开始。