Начать только мою синхронизацию сразу после добавления учетной записи в AccountManager? - PullRequest
2 голосов
/ 08 июня 2011

У меня есть дюжина учетных записей в AccountManager , и при добавлении новой учетной записи Android начинает синхронизировать все учетные записи.Поскольку их много, для запуска синхронизации требуется не менее 15 секунд.

Можно ли как-нибудь остановить / отменить синхронизацию всех учетных записей при добавлении новой, чтобы я мог позвонить ContentResolver.requestSync иначать синхронизировать только мой аккаунт в этот момент?

Спасибо,

Александар Илич.

1 Ответ

2 голосов
/ 01 июля 2011

Синхронизация предназначена в качестве фоновой службы.15 секунд кажутся вполне разумной задержкой перед началом синхронизации, особенно если добавление новой учетной записи (должно быть?) Является очень редким событием.Другая мысль заключается в том, что если у вас есть дюжина активных учетных записей, вы можете попытаться подумать о том, как уменьшить это число.Сайт с несколькими учетными записями одновременно?

Вы беспокоитесь об отзывчивости при первоначальной настройке или у вас есть какой-то вариант использования, требующий частого добавления и удаления учетных записей?
Если последний, посмотрите тольковключение и выключение ContentResolver.setIsSyncable() для данной пары контент / учетная запись.Если установлено значение false, флажок на странице учетных записей неактивен, и синхронизация не будет выполняться.Это может удовлетворить ваши потребности лучше, чем создание и уничтожение учетной записи.

Тем не менее, вы можете попробовать ускорить его.

  1. вручную вызовите ContentResolver.requestSync (Account account, String authority, Bundle extras) и посмотрите на дополнительные значения, определенные в ContentResolver.Вы можете попробовать SYNC_EXTRAS_MANUAL и SYNC_EXTRAS_EXPEDITED.

  2. Более экстремальный случай (который может действительно разозлить ваших пользователей, если вы испортите его ...), был бы для сохранения текущегосостояние основной синхронизации, а затем явным образом отключите основную синхронизацию (ContentResolver.setMasterSyncAutomatics (логическая синхронизация)) и нажмите синхронизацию с SYNC_EXTRAS_MANUAL, чтобы переопределить, а затем восстановите основную синхронизацию до ее исходного состояния после завершения синхронизации.

Вопрос в том, как это сделать ... Я бы подумал, что вам нужно использовать это в коде создания учетной записи в вашем приложении.

...