Aktivera offlinesynkronisering för din Android-mobilapp
Översikt
Den här självstudien beskriver offlinesynkroniseringsfunktionen i Azure Mobile Apps för Android. Med offlinesynkronisering kan slutanvändare interagera med en mobilapp – visa, lägga till eller ändra data – även om det inte finns någon nätverksanslutning. Ändringar lagras i en lokal databas. När enheten är online igen synkroniseras dessa ändringar med den fjärranslutna backend-enheten.
Om det här är din första erfarenhet av Azure Mobile Apps bör du först slutföra självstudien Skapa en Android-app. Om du inte använder det nedladdade snabbstartsserverprojektet måste du lägga till paketen för dataåtkomsttillägg i projektet. Mer information om servertilläggspaket finns i Arbeta med SDK för .NET-serverserver för Azure Mobile Apps.
Mer information om offlinesynkroniseringsfunktionen finns i avsnittet Offline Data Sync i Azure Mobile Apps.
Uppdatera appen så att den stöder offlinesynkronisering
Med offlinesynkronisering läser du till och skriver från en synkroniseringstabell (medhjälp av gränssnittet IMobileServiceSyncTable ), som är en del av en SQLite-databas på enheten.
Om du vill skicka och hämta ändringar mellan enheten och Azure Mobile Services använder du en synkroniseringskontext (MobileServiceClient.SyncContext), som du initierar med den lokala databasen för att lagra data lokalt.
I
TodoActivity.java
kommenterar du ut den befintliga definitionen avmToDoTable
och tar bort kommentaren för synkroniseringstabellversionen:private MobileServiceSyncTable<ToDoItem> mToDoTable;
I metoden
onCreate
kommenterar du ut den befintliga initieringen avmToDoTable
och tar bort kommentaren för den här definitionen:mToDoTable = mClient.getSyncTable("ToDoItem", ToDoItem.class);
Kommentera
refreshItemsFromTable
ut definitionen av och taresults
bort kommentaren för den här definitionen:// Offline Sync final List<ToDoItem> results = refreshItemsFromMobileServiceTableSyncTable();
Kommentera ut definitionen av
refreshItemsFromMobileServiceTable
.Avkommentering av definitionen av
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(); }
Avkommentering av definitionen av
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); }
Testa appen
I det här avsnittet testar du beteendet med WiFi på och inaktiverar WiFi för att skapa ett offlinescenario.
När du lägger till dataobjekt lagras de i det lokala SQLite-arkivet, men synkroniseras inte med mobiltjänsten förrän du trycker på knappen Uppdatera. Andra appar kan ha olika krav för när data måste synkroniseras, men i demonstrationssyfte har användaren uttryckligen begärt det i den här självstudien.
När du trycker på knappen startas en ny bakgrundsaktivitet. Den push-hämtar först alla ändringar som görs i det lokala arkivet med hjälp av synkroniseringskontext och hämtar sedan alla ändrade data från Azure till den lokala tabellen.
Offlinetestning
Placera enheten eller simulatorn i flygplansläge. Detta skapar ett offlinescenario.
Lägg till några ToDo-objekt eller markera några objekt som slutförda. Avsluta enheten eller simulatorn (eller stäng appen med två två miljoner) och starta om. Kontrollera att ändringarna har bevarats på enheten eftersom de lagras i det lokala SQLite-arkivet.
Visa innehållet i Azure TodoItem-tabellen med ett SQL-verktyg som SQL Server Management Studio eller en REST-klient som Fiddler eller Postman. Kontrollera att de nya objekten inte har synkroniserats till servern
+ 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*.
Aktivera WiFi på enheten eller simulatorn. Tryck sedan på knappen Uppdatera.
Visa TodoItem-data igen i Azure Portal. De nya och ändrade TodoItems bör nu visas.
Ytterligare resurser
- Datasynkronisering offline i Azure Mobile Apps
- Molnomslag: Offlinesynkronisering i Azure Mobile Services (obs! videon är på Mobile Services, men offlinesynkronisering fungerar på liknande sätt i Azure Mobile Apps)