Delen via


Offlinesynchronisatie inschakelen voor uw mobiele Android-app

Overzicht

In deze zelfstudie wordt de functie voor offlinesynchronisatie van Azure Mobile Apps voor Android be behandelt. Met offlinesynchronisatie kunnen eindgebruikers communiceren met een mobiele app, zoals het weergeven, toevoegen of wijzigen van gegevens, zelfs wanneer er geen netwerkverbinding is. Wijzigingen worden opgeslagen in een lokale database. Zodra het apparaat weer online is, worden deze wijzigingen gesynchroniseerd met de externe back-end.

Als dit uw eerste ervaring is met Azure Mobile Apps, moet u eerst de zelfstudie Een Android-app maken voltooien. Als u het gedownloade quickstart-serverproject niet gebruikt, moet u de extensiepakketten voor gegevenstoegang toevoegen aan uw project. Zie Work with the .NET backend server SDK for Azure Mobile Apps (Werken met de SDK voor de .NET-back-en-Mobile Apps) voor meer informatie over serverextensiepakketten.

Zie het onderwerp Offline Data Sync in Azure Mobile Apps voor meer informatie over de functie voor offlinesynchronisatie.

De app bijwerken om offlinesynchronisatie te ondersteunen

Met offlinesynchronisatie kunt u lezen naar en schrijven vanuit een synchronisatietabel (met behulp van de IMobileServiceSyncTable-interface ), die deel uitmaakt van een SQLite-database op uw apparaat.

Als u wijzigingen tussen het apparaat en Azure Mobile Services wilt pushen en pullen, gebruikt u een synchronisatiecontext (MobileServiceClient.SyncContext), die u initialiseert met de lokale database om gegevens lokaal op te slaan.

  1. In TodoActivity.javamoet u de bestaande definitie van de synchronisatietabel mToDoTable als commentaar gebruiken en de opmerkingen bij de versie van de synchronisatietabel inschakelen:

     private MobileServiceSyncTable<ToDoItem> mToDoTable;
    
  2. In de onCreate methode maakt u commentaar van de bestaande initialisatie van en mToDoTable maakt u de opmerkingen bij deze definitie op:

     mToDoTable = mClient.getSyncTable("ToDoItem", ToDoItem.class);
    
  3. In refreshItemsFromTable commentaar van de definitie van en results opmerkingen bij deze definitie:

     // Offline Sync
     final List<ToDoItem> results = refreshItemsFromMobileServiceTableSyncTable();
    
  4. Commentaar maken van de definitie van refreshItemsFromMobileServiceTable.

  5. Decomment de definitie van 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. Decomment de definitie van 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);
     }
    

De app testen

In deze sectie test u het gedrag met Wi-Fi aan en vervolgens zet u Wi-Fi uit om een offlinescenario te maken.

Wanneer u gegevensitems toevoegt, worden deze bewaard in de lokale SQLite-opslag, maar niet gesynchroniseerd met de mobiele service totdat u op de knop Vernieuwen drukt . Andere apps hebben mogelijk andere vereisten met betrekking tot wanneer gegevens moeten worden gesynchroniseerd, maar voor demodoeleinden heeft de gebruiker deze expliciet gevraagd voor deze zelfstudie.

Wanneer u op die knop drukt, wordt een nieuwe achtergrondtaak gestart. Eerst worden alle wijzigingen die zijn aangebracht in het lokale opslagopslag met behulp van synchronisatiecontext, vervolgens alle gewijzigde gegevens van Azure naar de lokale tabel gehaald.

Offline testen

  1. Plaats het apparaat of de simulator in de vliegtuigmodus. Hiermee wordt een offlinescenario gemaakt.

  2. Voeg enkele ToDo-items toe of markeer sommige items als voltooid. Sluit het apparaat of de simulator af (of sluit de app gecimeerd) en start opnieuw op. Controleer of uw wijzigingen zijn doorgevoerd op het apparaat omdat ze zijn opgeslagen in de lokale SQLite-opslag.

  3. Bekijk de inhoud van de Azure TodoItem-tabel met een SQL-hulpprogramma zoals SQL Server Management Studio of een REST-client zoals Fiddler of Postman. Controleer of de nieuwe items niet zijn gesynchroniseerd met de server

    + 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. Schakel Wi-Fi in het apparaat of de simulator in. Druk vervolgens op de knop Vernieuwen.

  5. Bekijk de TodoItem-gegevens opnieuw in de Azure Portal. De nieuwe en gewijzigde TodoItems moeten nu worden weergegeven.

Aanvullende resources