Подтвердить что ты не робот

Когда SyncAdapter запускает синхронизацию на Android?

Скажем, мое приложение реализует функциональность SyncAdapter и не определяет периодические синхронизации. Когда синхронизация произойдет в таком сценарии? Первый сценарий, о котором я могу думать, - это локальное изменение контента ContentProvided/database. Что происходит с изменениями в сервере? Как SyncAdapter узнает об этом?

4b9b3361

Ответ 1

Если у вас нет периодической настройки синхронизации, синхронизация произойдет, если ваш код явно вызывает ContentResolver.requestSync(Account account, String authority, Bundle extras) с вашей учетной записью и полномочиями.

Кроме того, если ваш ContentProvider вставляет или обновляет или удаляет функции, вызовите ContentResolver.notifyChange(Uri uri, ContentObserver observer, boolean syncToNetwork), если bool syncToNetwork является истинным (по умолчанию), он также инициирует синхронизацию. Здесь короткая задержка, вызванная здесь, чтобы гарантировать, что пакет изменений базы данных вызывает только одну синхронизацию, а не одну замену. Обратите внимание, что ваш код должен вызывать notifyChange, потому что это означает, что Android сигнализирует, как ваш пользовательский интерфейс будет обновляться после того, как контент, который отражает пользовательский интерфейс, был изменен.

Если база данных сервера изменится, ваше приложение не будет знать, потому что синхронизация не происходит. Два варианта:

  • Использовать периодическую синхронизацию. Это будет более чистым, если ваш API-интерфейс сервера реализует etags или if-modified-since http-заголовки для фильтрации синхронизируемых данных, поэтому только обновления снижаются.
  • C2DM (облачные сообщения устройств с облаком). По существу, push-уведомление для Android. Требуется несколько компонентов сервера. Вы привязываете идентификатор устройства к учетной записи на сервере и, когда сервер изменяется, он должен явно отправить сообщение на устройство, чтобы сообщить ему об обновлении. Это пользовательский код работает на сервере для поддержки Android специально, но как только вы инвестируете время, это здорово. C2DM - это то, как Android получает gmail для отображения на вашем устройстве через 10 секунд после того, как он поступит в ваш почтовый ящик, а не в следующую 10-минутную периодическую синхронизацию. Это также повышает эффективность работы аккумулятора, поскольку вы только включаете радио и синхронизируете, когда знаете, какие новые данные нужно получить.