概觀
本教學課程涵蓋適用於 Android 的 Azure Mobile Apps 離線同步處理功能。 離線同步可讓終端使用者與行動應用程式互動,即使在沒有網路連線時,也能檢視、新增或修改資料。 變更會儲存在本機資料庫中。 裝置重新上線后,這些變更會與遠端後端同步。
如果這是 Azure Mobile Apps 的第一次體驗,您應該先完成教學課程,建立 Android 應用程式。 如果您未使用下載的快速入門伺服器專案,您必須將資料存取延伸模組套件新增至專案。 如需有關伺服器擴充套件的更多資訊,請參閱 使用適用於 Azure 行動應用的 .NET 後台伺服器 SDK。
若要深入瞭解離線同步功能,請參閱在 Azure Mobile Apps 中 離線數據同步主題。
更新應用程式以支援離線同步處理
使用離線同步處理,您可以從 同步數據表 讀取和寫入(使用 IMobileServiceSyncTable 介面),這是裝置上 SQLite 資料庫的一部分。
若要推送和拉取裝置與 Azure 行動服務之間的變更,您可以使用 同步處理內容(MobileServiceClient.SyncContext),並透過本機資料庫初始化以便在本機儲存數據。
在
TodoActivity.java
中,批注化現有的mToDoTable
定義,並取消批注同步數據表版本:private MobileServiceSyncTable<ToDoItem> mToDoTable;
在
onCreate
方法中,將mToDoTable
的現有初始化註解掉,並取消註解這定義:mToDoTable = mClient.getSyncTable("ToDoItem", ToDoItem.class);
在
refreshItemsFromTable
註解掉results
的定義,並取消註解此定義:// Offline Sync final List<ToDoItem> results = refreshItemsFromMobileServiceTableSyncTable();
批注化
refreshItemsFromMobileServiceTable
的定義。取消註注
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(); }
取消註注
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); }
測試應用程式
在本節中,您會使用WiFi開啟來測試行為,然後關閉WiFi以建立離線案例。
當您新增數據項時,它們會保留在本機 SQLite 存放區中,但直到您按下 [重新整理] 按鈕,才會同步處理至行動服務。 其他應用程式在需要同步處理數據時可能會有不同的需求,但為了示範目的,本教學課程會讓用戶明確要求。
當您按下該按鈕時,會啟動新的背景工作。 它會先使用同步處理內容推送對本地存儲所做的所有變更,然後將所有已變更的數據從 Azure 提取到本機數據表。
離線測試
將裝置或模擬器置於 飛機模式。 這會建立離線場景。
新增一些 ToDo 專案,或將某些項目標示為完成。 結束裝置或模擬器(或強制關閉應用程式),然後重新啟動。 確認您的變更已保存在裝置上,因為它們會保留在本機 SQLite 存放區中。
使用 SQL Server Management Studio等 SQL 工具來檢視 Azure TodoItem 數據表的內容,或是 Fiddler 或 Postman等 REST 用戶端。 請確認新項目尚未同步至伺服器
+ 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*.
在裝置或模擬器中開啟WiFi。 接下來,按 [重新整理] 按鈕。
在 Azure 入口網站中再次檢視 TodoItem 數據。 新的和已變更的 TodoItems 現在應該會出現。
其他資源
- Azure Mobile Apps 中的 離線數據同步
- 雲端涵蓋範圍:Azure 行動服務 中的離線同步處理(注意:影片位於行動服務上,但離線同步處理的運作方式與 Azure Mobile Apps 類似)