Sdílet prostřednictvím


Povolení offline synchronizace pro mobilní aplikaci pro Android

Přehled

Tento kurz se zabývá funkcí offline synchronizace služby Azure Mobile Apps pro Android. Offline synchronizace umožňuje koncovým uživatelům pracovat s mobilní aplikací – prohlížením, přidáváním nebo úpravou dat – i když není k dispozici žádné síťové připojení. Změny se ukládají v místní databázi. Jakmile je zařízení opět online, tyto změny se synchronizují se vzdáleným back-endem.

Pokud je toto vaše první zkušenosti s Azure Mobile Apps, měli byste nejprve dokončit kurz Vytvoření aplikace pro Android. Pokud stažený projekt serveru pro rychlý start nepou ite, musíte do projektu přidat balíčky rozšíření pro přístup k datům. Další informace o balíčcích rozšíření serveru najdete v tématu Práce se sadou SDK back-endového serveru .NET pro Azure Mobile Apps.

Další informace o funkci offline synchronizace najdete v tématu Offline Synchronizace dat v Azure Mobile Apps.

Aktualizace aplikace tak, aby podporovala offline synchronizaci

Při offline synchronizaci můžete číst a zapisovat ze synchronizační tabulky (pomocí rozhraní IMobileServiceSyncTable ), která je součástí databáze SQLite na vašem zařízení.

K nabízení a přetápování změn mezi zařízením a službou Azure Mobile Services použijete kontext synchronizace (MobileServiceClient.SyncContext), který inicializujete s místní databází pro místní ukládání dat.

  1. V TodoActivity.javasouboru zakomentujte stávající definici mToDoTable verze tabulky synchronizace a odkomentujte ji:

     private MobileServiceSyncTable<ToDoItem> mToDoTable;
    
  2. V metodě onCreate zakomentování existující inicializace a mToDoTable zrušení komentáře k této definici:

     mToDoTable = mClient.getSyncTable("ToDoItem", ToDoItem.class);
    
  3. V refreshItemsFromTable komentáři zakomentuje definici results a odkomentuje tuto definici:

     // Offline Sync
     final List<ToDoItem> results = refreshItemsFromMobileServiceTableSyncTable();
    
  4. Zakomentování definice .refreshItemsFromMobileServiceTable

  5. Odkomentování definice 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. Odkomentování definice 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);
     }
    

Otestování aplikace

V této části otestujte chování pomocí funkce Wi-Fi a pak vypněte Wi-Fi, abyste vytvořili offline scénář.

Když přidáte datové položky, uloží se do místního úložiště SQLite, ale nesynchronují se s mobilní službou, dokud nestiskli tlačítko Aktualizovat. Jiné aplikace mohou mít různé požadavky týkající se toho, kdy je potřeba synchronizovat data, ale pro ukázkové účely si je uživatel v tomto kurzu explicitně vyžádá.

Když toto tlačítko stisknete, spustí se nová úloha na pozadí. Nejprve nasoudí všechny změny provedené do místního úložiště pomocí kontextu synchronizace a pak přetáhne všechna změněná data z Azure do místní tabulky.

Offline testování

  1. Umístěte zařízení nebo simulátor do režimu v letadle. Tím se vytvoří offline scénář.

  2. Přidejte některé položky seznamu todo nebo některé položky označte jako dokončené. Ukončete zařízení nebo simulátor (nebo vynuči zavřete aplikaci) a restartujte ho. Ověřte, že se vaše změny uchují na zařízení, protože jsou uloženy v místním obchodě SQLite.

  3. Obsah tabulky Azure TodoItem můžete zobrazit pomocí nástroje SQL, jako je SQL Server Management Studio, nebo pomocí klienta REST, jako je Fiddler nebo Postman. Ověřte, že nové položky nebyly synchronizované se serverem.

    + 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. Zapněte v zařízení nebo simulátoru možnost Wi-Fi. Potom stiskněte tlačítko Aktualizovat .

  5. Znovu zobrazte data TodoItem v Azure Portal. Měl by se zobrazit nový a změněný objekt TodoItems.

Další materiály