Sdílet prostřednictvím


Povolení offline synchronizace pro mobilní aplikaci pro Android

Přehled

Tento kurz se zabývá funkcí offline synchronizace 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ž připojení k síti neexistuje. Změny se ukládají v místní databázi. Jakmile je zařízení zase online, tyto změny se synchronizují se vzdáleným back-endem.

Pokud se jedná o 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 Rychlý start nepoužíváte, 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 budete číst a zapisovat z synchronizační tabulky (pomocí rozhraní IMobileServiceSyncTable ), která je součástí databáze SQLite na vašem zařízení.

Pokud chcete odesílat a přijímat změny mezi zařízením a Službami Azure Mobile Services, použijte kontext synchronizace (MobileServiceClient.SyncContext), který inicializujete místní databází, aby mohla data ukládat lokálně.

  1. V TodoActivity.java zakomentujte stávající definici mToDoTable a odkomentujte verzi synchronizační tabulky:

     private MobileServiceSyncTable<ToDoItem> mToDoTable;
    
  2. V metodě onCreate zakomentujte existující inicializaci mToDoTable a odkomentujte tuto definici:

     mToDoTable = mClient.getSyncTable("ToDoItem", ToDoItem.class);
    
  3. V refreshItemsFromTable zakomentujte definici a odkomentujte tuto definici: results

     // Offline Sync
     final List<ToDoItem> results = refreshItemsFromMobileServiceTableSyncTable();
    
  4. Zakomentujte definici refreshItemsFromMobileServiceTable.

  5. Odkomentujte definici 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. Odkomentujte definici 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 otestujete chování pomocí Wi-Fi a vypnete Wi-Fi a vytvoříte offline scénář.

Při přidávání datových položek se uchovávají v místním úložišti SQLite, ale nesynchronizují se s mobilní službou, dokud nestisknete tlačítko Aktualizovat . Jiné aplikace můžou mít jiné požadavky týkající se toho, kdy je potřeba synchronizovat data, ale pro účely ukázky si je uživatel explicitně vyžádá.

Když stisknete toto tlačítko, spustí se nová úloha na pozadí. Nejprve odešle všechny změny provedené v místním úložišti pomocí kontextu synchronizace a potom načítá 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 úkolů nebo označte některé položky jako dokončené. Ukončete zařízení nebo simulátor (nebo vynuceně zavřete aplikaci) a restartujte ji. Ověřte, že vaše změny byly v zařízení trvalé, protože jsou uloženy v místním úložišti SQLite.

  3. Zobrazte obsah tabulky Azure TodoItem pomocí nástroje SQL, jako je SQL Server Management Studio, nebo klienta REST, jako je Fiddler nebo Postman. Ověřte, že se nové položky nesynchronizovaly 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 Wi-Fi v zařízení nebo simulátoru. Pak stiskněte tlačítko Aktualizovat .

  5. Na webu Azure Portal znovu zobrazte data TodoItem. Nové a změněné položky TodoItems by se teď měly zobrazit.

Další zdroje informací