Włączanie synchronizacji w trybie offline dla aplikacji mobilnej systemu Android
Przegląd
W tym samouczku omówiono funkcję synchronizacji offline usługi Azure Mobile Apps dla systemu Android. Synchronizacja w trybie offline umożliwia użytkownikom końcowym 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 zapleczem.
Jeśli korzystasz z usługi Azure Mobile Apps, najpierw wykonaj samouczek Tworzenie aplikacji dla systemu Android. Jeśli nie używasz pobranego projektu serwera Szybki start, musisz dodać pakiety rozszerzeń dostępu do danych do projektu. Aby uzyskać więcej informacji na temat pakietów rozszerzeń serwera, zobacz Work with the .NET backend server SDK for Azure Mobile Apps.
Aby dowiedzieć się więcej na temat funkcji synchronizacji offline, zobacz temat Offline Data Sync 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óry jest częścią bazy danych SQLite na urządzeniu.
Aby wypychać i ściągać zmiany między urządzeniem a usługami Azure Mobile Services, należy użyć kontekstu synchronizacji (MobileServiceClient.SyncContext), który jest inicjowany za pomocą lokalnej bazy danych do przechowywania danych lokalnie.
W
TodoActivity.java
pliku zakomentuj istniejącą definicjęmToDoTable
i odkomentuj wersję tabeli synchronizacji.private MobileServiceSyncTable<ToDoItem> mToDoTable;
W metodzie
onCreate
zakomentuj istniejącą inicjalizacjęmToDoTable
i odkomentuj tę definicję:mToDoTable = mClient.getSyncTable("ToDoItem", ToDoItem.class);
W
refreshItemsFromTable
zakomentuj definicjęresults
i odkomentuj tę definicję:// Offline Sync final List<ToDoItem> results = refreshItemsFromMobileServiceTableSyncTable();
Zakomentuj definicję
refreshItemsFromMobileServiceTable
.Usuń komentarz z definicji elementu
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(); }
Usuń komentarz z definicji elementu
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 przetestujesz zachowanie za pomocą sieci Wi-Fi, a następnie wyłączysz 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 tego, kiedy dane muszą być synchronizowane, ale do celów demonstracyjnych użytkownik w tym samouczku musi wyraźnie o to poprosić.
Po naciśnięciu tego przycisku zostanie uruchomione nowe zadanie w tle. Najpierw przesyła wszystkie zmiany wprowadzone do magazynu lokalnego przy użyciu kontekstu synchronizacji, a następnie pobiera wszystkie zmienione dane z platformy Azure do tabeli lokalnej.
Testowanie w trybie offline
Umieść urządzenie lub symulator w trybie samolotowym . Spowoduje to utworzenie scenariusza offline.
Dodaj niektóre elementy zadań do wykonania lub oznacz niektóre elementy jako ukończone. Zamknij aplikację na urządzeniu lub symulatorze (wymuszając zamknięcie, jeśli to konieczne) i uruchom ją ponownie. Sprawdź, czy zmiany zostały utrwalone na urządzeniu, ponieważ są one 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 symulatorze. Następnie naciśnij przycisk Odśwież .
Ponownie wyświetl dane TodoItem w portalu Azure. Powinny zostać wyświetlone nowe i zmienione elementy TodoItems.
Dodatkowe zasoby
- Offline Synchronizacja Danych w usłudze Azure Mobile Apps
- Cloud Cover: synchronizacja w trybie offline w usłudze Azure Mobile Services (uwaga: film wideo jest w usłudze Mobile Services, ale synchronizacja w trybie offline działa w podobny sposób w usłudze Azure Mobile Apps)