2016-05-31 2 views
0

Недавно я узнал, что при использовании ContentProvider с CursorLoaders нет необходимости создавать свой собственный ContentObserver, вы просто вызываете курсор # setNotificationUri() или getContext(). GetResolver(). NotifyChange. Теперь я хочу использовать SyncAdapter для выполнения синхронизации при изменении данных, и для этого требуется наличие ContentObserver для соответствующих URI, мой вопрос в том, какой эффект будет иметь на вышеупомянутый способ прослушивания изменений данных?SyncAdapter без ContentObserver

ответ

1

Для синхронизации синхронизации при использовании SyncAdapter вам не нужен ContentObserver. Просто убедитесь, что вы установили syncToNetwork в true, когда вы звоните notifyChange (Uri uri, ContentObserver observer, boolean syncToNetwork).

Android будет автоматически вызывать все SyncAdapters для этого органа, у которых supportsUploading установлено на true и настроено на автоматическую синхронизацию.

+0

но метод cursor.setNotificationUri не имеет параметра syncToNetwork, что я делаю в этом случае? – lll

+0

Это не имеет значения. Это только для того, чтобы уведомить курсор об изменениях, поэтому пользовательский интерфейс может немедленно обновиться. Ваш ContentProvider должен установить 'syncToNetwork' в' true' всякий раз, когда что-то было изменено, что может потребоваться синхронизация (поэтому вам нужно только установить его на операции вставки, обновления и удаления). Имейте в виду, что вы не должны устанавливать его в true, если что-то было изменено с помощью SyncAdapter (поскольку это может вызвать цикл). – Marten

+0

я вижу, спасибо .. – lll

Смежные вопросы