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.
V
TodoActivity.java
souboru zakomentujte stávající definicimToDoTable
verze tabulky synchronizace a odkomentujte ji:private MobileServiceSyncTable<ToDoItem> mToDoTable;
V metodě
onCreate
zakomentování existující inicializace amToDoTable
zrušení komentáře k této definici:mToDoTable = mClient.getSyncTable("ToDoItem", ToDoItem.class);
V
refreshItemsFromTable
komentáři zakomentuje definiciresults
a odkomentuje tuto definici:// Offline Sync final List<ToDoItem> results = refreshItemsFromMobileServiceTableSyncTable();
Zakomentování definice .
refreshItemsFromMobileServiceTable
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(); }
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í
Umístěte zařízení nebo simulátor do režimu v letadle. Tím se vytvoří offline scénář.
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.
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*.
Zapněte v zařízení nebo simulátoru možnost Wi-Fi. Potom stiskněte tlačítko Aktualizovat .
Znovu zobrazte data TodoItem v Azure Portal. Měl by se zobrazit nový a změněný objekt TodoItems.
Další materiály
- Offline synchronizace dat pro Azure Mobile Apps
- Cloudový titulek: Offline synchronizace v Azure Mobile Services (poznámka: video je na Mobile Services, ale offline synchronizace funguje podobně v Azure Mobile Apps)