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

Android: syncable = true для ContentProvider?

При попытке понять инфраструктуру Android SyncAdapter/ContentProvider одна вещь все еще ускользает от меня. Я не понимаю, почему ContentProvider нуждается в android:syncable="true" для определения в манифесте.

Почему ContentProvider должен знать, будет ли он использоваться из SyncAdapter?

В документах Google говорится: "Флаг позволяет инфраструктуре адаптера синхронизации выполнять передачу данных с поставщиком контента, но передача происходит только в том случае, если вы делаете это явно".

Означает ли это, что если я не укажу android:syncable="true", я не могу использовать ContentProvider в SyncAdapter onPerform? Если да, то каким образом структура может даже обеспечить такую ​​вещь?

Может кто-нибудь помочь мне пролить свет на эту тему?

Спасибо

4b9b3361

Ответ 1

A ContentProvider не нуждается в android:syncable к его ассоциированному SyncAdapter.

И вы спрашиваете:

Означает ли это, что если я не укажу android: syncable = "true", я не могу использовать ContentProvider в SyncAdapter onPerform?

Это не то, что это значит.

В документе android:syncable определяется

Следует ли синхронизировать данные под контролем поставщика контента с данными на сервере

AFAIK, вы можете определить ContentProvider без SyncAdapter - противоположное значение false, см. также Что я должен использовать AccountManager для Android?