Aktivieren der Offlinesynchronisierung für Ihre mobile Android-App
Übersicht
In diesem Tutorial wird die Offlinesynchronisierungsfunktion von Azure Mobile Apps für Android behandelt. Die Offlinesynchronisierung ermöglicht Endbenutzern die Interaktion mit einer mobilen App (Anzeigen, Hinzufügen oder Ändern von Daten), auch wenn keine Netzwerkverbindung besteht. Änderungen werden in einer lokalen Datenbank gespeichert. Sobald das Gerät wieder online ist, werden diese Änderungen mit dem Remote-Back-End synchronisiert.
Falls Sie noch keine Erfahrung mit Azure Mobile Apps haben, sollten Sie zunächst das Tutorial Erstellen einer Android-Appabschließen. Wenn Sie das heruntergeladene Schnellstart-Serverprojekt nicht verwenden, müssen Sie Ihrem Projekt die Datenzugriffs-Erweiterungspakete hinzufügen. Weitere Informationen zu Servererweiterungspaketen finden Sie unter Work with the .NET backend server SDK for Azure Mobile Apps(in englischer Sprache).
Weitere Informationen zur Offlinesynchronisierungsfunktion finden Sie im Thema Offlinedatensynchronisierung in Azure Mobile Apps.
Aktualisieren der App für die Unterstützung von Offlinesynchronisierung
Bei der Offlinesynchronisierung wird in eine Synchronisierungstabelle geschrieben und aus dieser gelesen (mit der IMobileServiceSyncTable-Schnittstelle). Diese ist Teil einer SQLite-Datenbank auf Ihrem Gerät.
Zum Übertragen von Änderungen per Push und Pull zwischen dem Gerät und Azure Mobile Services verwenden Sie einen Synchronisierungskontext (MobileServiceClient.SyncContext), den Sie mit der lokalen Datenbank initialisieren, in der Sie die Daten lokal speichern.
Kommentieren Sie in
TodoActivity.java
die vorhandene Definition vonmToDoTable
und entfernen Sie den Kommentar für die Version der Synchronisierungstabelle:private MobileServiceSyncTable<ToDoItem> mToDoTable;
Kommentieren Sie in der
onCreate
-Methode die vorhandene InitialisierungmToDoTable
und entfernen Sie den Kommentar für diese Definition:mToDoTable = mClient.getSyncTable("ToDoItem", ToDoItem.class);
Kommentieren Sie in
refreshItemsFromTable
die Definition vonresults
und heben Sie den Kommentar für diese Definition auf:// Offline Sync final List<ToDoItem> results = refreshItemsFromMobileServiceTableSyncTable();
Kommentieren Sie die Definition von
refreshItemsFromMobileServiceTable
.Enfernen Sie den Kommentar der Definition von
refreshItemsFromMobileServiceTableSyncTable
:private List<ToDoItem> refreshItemsFromMobileServiceTableSyncTable() throws ExecutionException, InterruptedException { //sync the data sync().get(); Query query = QueryOperations.field("complete"). eq(val(false)); return mToDoTable.read(query).get(); }
Enfernen Sie den Kommentar der Definition von
sync
:private AsyncTask<Void, Void, Void> sync() { AsyncTask<Void, Void, Void> task = new AsyncTask<Void, Void, Void>(){ @Override protected Void doInBackground(Void... params) { try { MobileServiceSyncContext syncContext = mClient.getSyncContext(); syncContext.push().get(); mToDoTable.pull(null).get(); } catch (final Exception e) { createAndShowDialogFromTask(e, "Error"); } return null; } }; return runAsyncTask(task); }
Testen der App
In diesem Abschnitt testen Sie das Verhalten bei aktiviertem WLAN und deaktivieren anschließend WLAN, um ein Offlineszenario zu erzeugen.
Wenn Sie Datenelemente hinzufügen, werden diese im lokalen SQLite-Speicher gespeichert, jedoch erst mit dem mobilen Dienst synchronisiert, wenn Sie auf die Schaltfläche Aktualisieren klicken. Bei anderen Apps müssen Daten möglicherweise zu anderen Zeitpunkten synchronisiert werden, zur Veranschaulichung muss jedoch in diesem Lernprogramm der Benutzer die Synchronisierung explizit anfordern.
Wenn Sie auf diese Schaltfläche klicken, wird eine neue Hintergrundaufgabe gestartet. Sie überträgt zuerst alle Änderungen am lokalen Speicher unter Verwendung eines Synchronisierungskontexts und ruft dann alle geänderten Daten aus Azure in die lokale Tabelle ab.
Offlinetest
Schalten Sie das Gerät oder den Simulator in den Flugzeugmodus. Dies erzeugt ein Offlineszenario.
Fügen Sie einige ToDo-Elemente hinzu, oder markieren Sie einige Elemente als abgeschlossen. Schalten Sie das Gerät oder den Simulator aus (oder erzwingen Sie das Schließen der App), und starten Sie das Gerät bzw. den Simulator neu. Vergewissern Sie sich, dass die Änderungen auf dem Gerät beibehalten wurden, da sie im lokalen SQLite-Speicher gespeichert sind.
Zeigen Sie die Inhalte der Azure-TodoItem-Tabelle entweder mit einem SQL-Tool wie SQL Server Management Studio oder einen REST-Client wie Fiddler oder Postman an. Vergewissern Sie sich, dass die neuen Elemente nicht mit dem Server synchronisiert wurden.
+ For a Node.js backend, go to the [Azure portal](https://portal.azure.com/), and in your Mobile App backend click **Easy Tables** > **TodoItem** to view the contents of the `TodoItem` table. + For a .NET backend, view the table contents either with a SQL tool such as *SQL Server Management Studio*, or a REST client such as *Fiddler* or *Postman*.
Aktivieren Sie auf dem Gerät oder Simulator WLAN. Klicken Sie anschließend auf die Schaltfläche Aktualisieren .
Zeigen Sie die TodoItem-Daten erneut im Azure-Portal an. Es sollten jetzt die neuen und geänderten TodoItems angezeigt werden.
Weitere Ressourcen
- Offlinedatensynchronisierung in Azure Mobile Apps
- Cloud Cover: Offlinesynchronisierung in Azure Mobile Services (Hinweis: Im Video geht es zwar um Mobile Services, aber die Offlinesynchronisierung in Azure Mobile Apps funktioniert auf ähnliche Weise.)