Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Översikt
Den här självstudien beskriver funktionen för offlinesynkronisering i Azure Mobile Apps för Android. Med offlinesynkronisering kan slutanvändarna 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 fjärrserverdelen.
Om det här är din första upplevelse med 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 Work with the .NET backend server SDK for Azure Mobile Apps.
Mer information om funktionen för offlinesynkronisering finns i avsnittet Offline Data Sync i Azure Mobile Apps.
Uppdatera appen för att stödja offlinesynkronisering
Med offlinesynkronisering läser du till och skriver från en synkroniseringstabell (med 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.javakommenterar du ut den befintliga definitionen av och avkommenterademToDoTablesynkroniseringstabellversionen:private MobileServiceSyncTable<ToDoItem> mToDoTable;onCreateI metoden kommenterar du ut den befintliga initieringen av och avkommentarmToDoTableden här definitionen:mToDoTable = mClient.getSyncTable("ToDoItem", ToDoItem.class);Kommentera
refreshItemsFromTableut definitionen av och avkommenteringenresultsfö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 sedan 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 på när data behöver synkroniseras, men i demosyfte begär användaren uttryckligen den i den här självstudien.
När du trycker på knappen startas en ny bakgrundsaktivitet. Den skickar först alla ändringar som gjorts i det lokala arkivet med hjälp av synkroniseringskontexten och hämtar sedan alla ändrade data från Azure till den lokala tabellen.
Offlinetest
Placera enheten eller simulatorn i flygplansläge. Detta skapar ett offlinescenario.
Lägg till några ToDo-objekt eller markera vissa objekt som slutförda. Avsluta appen på enheten eller simulatorn (eller tvångsavsluta appen) och starta om. Kontrollera att ändringarna har sparats på enheten eftersom de lagras i det lokala SQLite-arkivet.
Visa innehållet i Azure TodoItem-tabellen antingen 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 i enheten eller simulatorn. Tryck sedan på knappen Uppdatera .
Visa TodoItem-data igen i Azure-portalen. De nya och ändrade TodoItems bör nu visas.
Ytterligare resurser
- Offline Data Sync i Azure Mobile Apps
- Cloud Cover: OfflineSynkronisering i Azure Mobile Services (obs! videon finns i Mobile Services, men offlinesynkronisering fungerar på ett liknande sätt i Azure Mobile Apps)