2011-06-08 44 views
2

我在AccountManager中有几十个帐户,当添加新帐户Android开始同步所有帐户时。由于它们中有很多,至少需要15秒来启动我的同步。将Account添加到AccountManager后立即开始我的同步?

当我添加新帐户时,是否有任何方法可以停止/取消所有帐户的同步化,因此我可以拨打ContentResolver.requestSync,并开始只在当时同步我的帐户?

谢谢,

亚历山大伊利奇。

回答

2

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

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

也就是说,你可以试试加速。

  1. 手动调用ContentResolver.requestSync (Account account, String authority, Bundle extras) ,并期待在ContentResolver的定义的额外价值。您可以尝试SYNC_EXTRAS_MANUALSYNC_EXTRAS_EXPEDITED

  2. 更极端的情况下(这可能真的会让你的用户感到厌烦,如果你搞砸了......)将是保存主同步的当前状态,然后明确禁用主同步(ContentResolver.setMasterSyncAutomatically(boolean sync )),并推动与SYNC_EXTRAS_MANUAL同步以覆盖,然后在同步完成后将主同步恢复到其初始状态。

问题是如何做到这一点...你需要从你的应用程序中的帐户创建代码踢掉它,我想。

+0

嗨@jcwenger,谢谢你的回答。我担心首次设置响应能力,我还没有找到解决方案来请求只有我的同步。我认为没有正确的方式来同步只有一个帐户。 – 2011-08-01 16:02:17