Share via


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.

  1. I TodoActivity.javakommenterar du ut den befintliga definitionen av mToDoTable och tar bort kommentaren för synkroniseringstabellversionen:

     private MobileServiceSyncTable<ToDoItem> mToDoTable;
    
  2. I metoden onCreate kommenterar du ut den befintliga initieringen av mToDoTable och tar bort kommentaren för den här definitionen:

     mToDoTable = mClient.getSyncTable("ToDoItem", ToDoItem.class);
    
  3. Kommentera refreshItemsFromTable ut definitionen av och ta results bort kommentaren för den här definitionen:

     // Offline Sync
     final List<ToDoItem> results = refreshItemsFromMobileServiceTableSyncTable();
    
  4. Kommentera ut definitionen av refreshItemsFromMobileServiceTable.

  5. 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();
     }
    
  6. 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

  1. Placera enheten eller simulatorn i flygplansläge. Detta skapar ett offlinescenario.

  2. 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.

  3. 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*.
    
  4. Aktivera WiFi på enheten eller simulatorn. Tryck sedan på knappen Uppdatera.

  5. Visa TodoItem-data igen i Azure Portal. De nya och ändrade TodoItems bör nu visas.

Ytterligare resurser