2016-05-31 27 views
0

Ich habe vor kurzem gelernt, dass wenn Sie einen ContentProvider mit CursorLoaders verwenden, Sie keinen eigenen ContentObserver erstellen müssen, sondern einfach cursor # setNotificationUri() oder getContext(). GetResolver(). NotifyChange. Jetzt möchte ich einen SyncAdapter verwenden, um bei Datenänderungen Synchronisierungen durchzuführen, und eine Voraussetzung hierfür ist, dass ich einen ContentObserver für die entsprechenden URIs habe. Meine Frage ist, welche Auswirkungen dies auf die oben erwähnte Art hat, auf Datenänderungen zu warten.SyncAdapter ohne ContentObserver

Antwort

1

Sie benötigen keine ContentObserver, um eine Synchronisierung auszulösen, wenn Sie einen SyncAdapter verwenden. Stellen Sie nur sicher, dass Sie syncToNetwork auf True setzen, wenn Sie notifyChange (Uri uri, ContentObserver observer, boolean syncToNetwork) anrufen.

Android ruft automatisch alle SyncAdapter für diese Autorität an, die supportsUploading auf true eingestellt haben und für die automatische Synchronisierung konfiguriert sind.

+0

aber die Methode cursor.setNotificationUri hat nicht den Parameter syncToNetwork, was mache ich in diesem Fall? – lll

+0

Das ist irrelevant. Dies dient nur dazu, den Cursor über Änderungen zu informieren, sodass sich die Benutzeroberfläche sofort aktualisieren kann. Ihr ContentProvider sollte "syncToNetwork" auf "true" setzen, wenn etwas geändert wurde, das möglicherweise synchronisiert werden muss (Sie müssen es also nur beim Einfügen, Aktualisieren und Löschen von Vorgängen festlegen). Beachten Sie, dass Sie es nicht auf "true" setzen sollten, wenn etwas vom SyncAdapter geändert wurde (da dies eine Schleife verursachen könnte). – Marten

+0

ich sehe, danke .. – lll