Eine Android App mit Offline Sync erstellen. Soll ich SyncAdapter verwenden?

8

Ich versuche, einen Android-To-Do-Client für einen Webdienst mit Offline-Caching und -Synchronisierung zu erstellen.

Der Web-Service gibt Daten im JSON-Format über To-Do-Aufgaben auf dem Server zurück, wenn Sie ihm eine Post-Nachricht senden. Um eine Aufgabe auf dem Server hinzuzufügen, müssen Sie einen JSON POST an den Server mit den Aufgabendetails senden, woraufhin Sie eine Aufgabe UUID zurückgeben.

Ich möchte eine Art Synchronisierung implementieren, damit die Aufgaben, die ich hinzufüge, wenn ich offline bin, an den Server gesendet werden und Daten vom Server mit der App synchronisiert werden (2-Wege-Synchronisierung), wenn Internet verfügbar ist.

Im Moment habe ich eine To-Do-App auf Basis des Content-Providers geschrieben, die nicht mit dem Server kommuniziert. Meine Frage ist, was wäre der beste Weg, um eine solche Funktionalität zu implementieren?

Planen Sie,

zu testen

Ich denke, ich muss JSON vom Server holen, es in eine lokale SQLite-DB schieben, Vergleiche durchführen und nicht synchronisierte Elemente finden und sie zum Server schieben. Ich denke, dass ich dies tun kann, indem ich asynchrone Abfragen in meinem ContentProvider hinzufüge (nicht sicher, ob dies der beste Weg ist).

Que:

Soll ich meine eigene Implementierung desselben schreiben oder kann ein SyncAdapter all diese Magie tun? Gibt es noch andere Designparameter, die ich in Betracht ziehen sollte?

    
karthik 20.11.2014, 05:08
quelle

2 Antworten

3

Ich denke, was für Ihr Problem optimal wäre, wäre die Verwendung von GCM Push, um nicht synchronisierte Serverdaten auf Ihren Android-Client zu übertragen. Um die SQL-Daten Ihres Kunden zu synchronisieren, würden Sie wissen, was nicht auf dem Server aktualisiert wurde und wann immer das Gerät mit dem Netzwerk verbunden ist, diese Daten an den Server senden. Eine höhere Kommunikationsschicht zwischen Client und Server kann die Entscheidung darüber, was nicht synchronisiert ist, implementieren. Obiges geht davon aus, dass Sie einen eigenen Server haben, mit dem Ihr Client kommunizieren würde.

Wenn Sie nicht den Server besitzen, scheint Ihre Strategie, einen Synchronisationsadapter zu schreiben, gut. Dieser Link soll Ihnen helfen, die Feinheiten von Sync Adapter zu kennen

    
Maddy 20.11.2014, 06:18
quelle
5

Damit eine Bibliothek in Ihren SyncAdapter eingesteckt werden kann und eine Demo-App, die die 2-Wege-Synchronisierung der Google Task API mit der lokalen Android SQLite db demonstriert, gehen Sie folgendermaßen vor: github repo:

Ссылка

    
Sean 20.11.2014 18:18
quelle

Tags und Links