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
0
A
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.
aber die Methode cursor.setNotificationUri hat nicht den Parameter syncToNetwork, was mache ich in diesem Fall? – lll
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
ich sehe, danke .. – lll