2

我在AccountManager中有十几个帐户,当添加新帐户时,Android 开始同步所有帐户。由于它们很多,至少需要 15 秒才能开始同步。

当我添加新帐户时,有什么方法可以停止/取消所有帐户的同步,这样我就可以ContentResolver.requestSync在那个时候调用并开始只同步我的帐户?

谢谢,

亚历山大·伊利奇。

4

1 回答 1

2

Sync 旨在作为后台服务。在同步开始之前 15 秒似乎是一个完全合理的延迟,特别是当添加一个新帐户(应该?)是一个非常罕见的事件时。另一个想法是,如果您有十几个活跃帐户,您可能会尝试考虑如何减少该数量 - 毕竟您有这么多帐户吗?多个帐户同时站点?

您是否担心首次设置响应能力,或者您是否有一些需要您经常实际添加和删除帐户的用例?
如果是后者,只需ContentResolver.setIsSyncable()查看给定内容/帐户对的打开和关闭。如果为 false,帐户页面上的复选框将显示为灰色,并且不会发生同步。这可能比创建和销毁帐户更能满足您的需求。

也就是说,您可以尝试加快速度。

  1. 手动调用ContentResolver.requestSync (Account account, String authority, Bundle extras) 并查看 ContentResolver 中定义的 extras 值。你可以试试SYNC_EXTRAS_MANUALSYNC_EXTRAS_EXPEDITED

  2. 一个更极端的情况(如果你搞砸了,这可能真的会惹恼你的用户......)是保存主同步的当前状态,然后显式禁用主同步(ContentResolver.setMasterSyncAutomatically(boolean sync))并推送同步完成后,同步SYNC_EXTRAS_MANUAL覆盖,然后将主同步恢复到其初始状态。

问题是如何做到这一点......我认为,您需要从应用程序中的帐户创建代码开始。

于 2011-07-01T13:28:32.840 回答