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