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