Włączanie synchronizacji w trybie offline dla aplikacji mobilnej systemu Android
Omówienie
Ten samouczek obejmuje funkcję synchronizacji w trybie offline usługi Azure Mobile Apps dla systemu Android. Synchronizacja w trybie offline umożliwia użytkownikom mobilnym interakcję z aplikacją mobilną — wyświetlanie, dodawanie lub modyfikowanie danych — nawet wtedy, gdy nie ma połączenia sieciowego. Zmiany są przechowywane w lokalnej bazie danych. Po powrocie urządzenia do trybu online te zmiany są synchronizowane ze zdalnym zapleczami.
Jeśli jest to Pierwsze doświadczenie z usługą Azure Mobile Apps, należy najpierw ukończyć samouczek Tworzenie aplikacji dla systemu Android. Jeśli nie używasz pobranego projektu serwera Szybki start, musisz dodać do projektu pakiety rozszerzeń dostępu do danych. Aby uzyskać więcej informacji na temat pakietów rozszerzeń serwera, zobacz Praca z zestawem SDK serwera zaplecza platformy .NET dla usługi Azure Mobile Apps.
Aby dowiedzieć się więcej na temat funkcji synchronizacji w trybie offline, zobacz temat Offline Data Sync in Azure Mobile Apps (Synchronizacja w trybie offline w usłudze Azure Mobile Apps).
Aktualizowanie aplikacji w celu obsługi synchronizacji w trybie offline
Synchronizacja w trybie offline umożliwia odczyt i zapis z tabeli synchronizacji (przy użyciu interfejsu IMobileServiceSyncTable ), która jest częścią bazy danych SQLite na urządzeniu.
Aby wypychać i ściągać zmiany między urządzeniem i usługą Azure Mobile Services, należy użyć kontekstu synchronizacji (MobileServiceClient.SyncContext), który jest inicjujeny z lokalną bazą danych w celu przechowywania danych lokalnie.
W
TodoActivity.java
pliku należy komentarz do istniejącej definicji tabelimToDoTable
synchronizacji i komentarza wersji tabeli synchronizacji:private MobileServiceSyncTable<ToDoItem> mToDoTable;
W metodzie
onCreate
zakomentuj istniejącą inicjacjęmToDoTable
tej definicji i cofń jej komentarz:mToDoTable = mClient.getSyncTable("ToDoItem", ToDoItem.class);
W
refreshItemsFromTable
komentarzu definicja iresults
komentarz tej definicji:// Offline Sync final List<ToDoItem> results = refreshItemsFromMobileServiceTableSyncTable();
Nadaj komentarz definicji .
refreshItemsFromMobileServiceTable
Cokmentuj definicję :
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(); }
Cokmentuj definicję :
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); }
Testowanie aplikacji
W tej sekcji przetestujemy zachowanie przy użyciu sieci Wi-Fi, a następnie wyłączymy sieć Wi-Fi, aby utworzyć scenariusz w trybie offline.
Po dodaniu elementów danych są one przechowywane w lokalnym magazynie SQLite, ale nie są synchronizowane z usługą mobilną do momentu naciśnięcia przycisku Odśwież . Inne aplikacje mogą mieć różne wymagania dotyczące sytuacji, w których należy zsynchronizować dane, ale w celach demonstracyjnych w tym samouczku użytkownik jawnie zażąda ich.
Po naciśnięciu tego przycisku zostanie uruchomiony nowe zadanie w tle. Najpierw wypycha wszystkie zmiany wprowadzone do magazynu lokalnego przy użyciu kontekstu synchronizacji, a następnie ściąga wszystkie zmienione dane z platformy Azure do tabeli lokalnej.
Testowanie offline
Umieść urządzenie lub symulator w trybie samolotowym. Powoduje to utworzenie scenariusza w trybie offline.
Dodaj niektóre zadania do wykonania lub oznacz niektóre elementy jako ukończone. Zamknij urządzenie lub symulator (lub wymusz zamknięcie aplikacji) i uruchom ponownie. Sprawdź, czy zmiany zostały utrwalone na urządzeniu, ponieważ są przechowywane w lokalnym magazynie SQLite.
Wyświetl zawartość tabeli Azure TodoItem za pomocą narzędzia SQL, takiego jak SQL Server Management Studio, lub klienta REST, takiego jak Fiddler lub Postman. Sprawdź, czy nowe elementy nie zostały zsynchronizowane z serwerem
+ 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*.
Włącz sieć Wi-Fi na urządzeniu lub w symulatorze. Następnie naciśnij przycisk Odśwież .
Ponownie wyświetl dane todoItem w Azure Portal. Powinny zostać wyświetlone nowe i zmienione todoItems.
Dodatkowe zasoby
- Synchronizowanie danych w trybie offline w usłudze Azure Mobile Apps
- Cloud Cover: synchronizacja w trybie offline w usłudze Azure Mobile Services (uwaga: wideo jest w Mobile Services, ale synchronizacja w trybie offline działa w podobny sposób w usłudze Azure Mobile Apps)