将Account添加到AccountManager后立即开始我的同步?

时间:2011-06-08 16:24:15

标签: android android-syncadapter

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

当我添加新帐户时,有没有办法停止/取消所有帐户的同步,所以我可以拨打ContentResolver.requestSync并在那时开始同步我的帐户?

谢谢,

AleksandarIlić。

1 个答案:

答案 0 :(得分:2)

同步旨在作为后台服务。在同步开始之前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推送同步以覆盖,然后在同步完成后将主同步恢复到其初始状态。

  3. 问题是如何做到这一点......我想你应该从应用中的帐户创建代码中解决这个问题。