Я пишу свой собственный ContentProvider, который будет синхронизироваться с веб-службой с помощью SyncAdapter.
Проблема возникает, когда адаптер синхронизации изменяет данные провайдера контента, провайдер запускает сетевую синхронизацию при внутреннем вызове getContentResolver (). NotifyChange, вызывая цикл синхронизации.
notifyChange с флагом сетевой синхронизациитребуется, когда клиентское приложение выполняет изменение, но его следует избегать при изменении адаптера синхронизации.
Как можно, внутри контент-провайдера, легко определить, используется ли оно клиентским приложением (которое должно запускать сетьсинхронизировать при модификации) или с помощью адаптера синхронизации (который не должен запускать сетевую синхронизацию).
В настоящее время я использую различные CONTENT_URI (адаптер синхронизации обращается к данным с помощью CONTENT_URI_NO_SYNC и клиентских приложений, используя CONTENT_URI), чтобы иметь возможностьчтобы различать два типа доступа и соответственно установить флаг сетевой синхронизации.