2017-02-18 61 views
1

在Azure Mobile Services Android SDK中使用脫機同步時,是否需要在每個需要訪問某個表的Activity中調用MobileServiceSyncContext.initialize?如果是這樣,爲什麼?本地數據庫不應該只初始化一次?我做錯了嗎?每次調用初始化方法時,它都會嘗試再次創建所有表,即使它們已經存在,對我而言,它並不是那麼好。有什麼辦法可以初始化syncContext一次,或者至少避免每次syncContext初始化時運行sql腳本來創建表的框架?我是否需要在每個Activity中調用MobileServiceSyncContext.initialize?

謝謝!

PS:我在Android開發新手,所以是很好:)

回答

0

根據你的描述,根據我的理解,似乎你有遵循以下一些文件和樣品用來創建您的應用程序脫機同步數據功能。

  1. 博客:Offline support in the Azure Mobile Services Android SDK
  2. 樣品:https://github.com/Azure/mobile-services-samples/blob/master/TodoOffline/Android/blog20140807/app/src/main/java/com/example/blog20140807/ToDoActivity.java

按我的經驗&根據Azure的移動應用SDK爲Android的javadocs,我想你可以嘗試使用方法MobileServiceSyncContext.isInitalized添加代碼下面根據下面的sample code檢查MobileServiceSyncContext初始化狀態,以避免重複初始化操作。

MobileServiceSyncContext syncContext = mClient.getSyncContext(); 

if(syncContext.isInitalized()) { 

    Map<String, ColumnDataType> tableDefinition = new HashMap<String, ColumnDataType>(); 
    tableDefinition.put("id", ColumnDataType.String); 
    tableDefinition.put("text", ColumnDataType.String); 
    tableDefinition.put("complete", ColumnDataType.Boolean); 
    tableDefinition.put("__version", ColumnDataType.String); 

    localStore.defineTable("ToDoItem", tableDefinition); 
    syncContext.initialize(localStore, handler).get(); 
} 
0

也許下面的細節可以幫助解決方案。對於MobileServiceClient,您需要應用程序的上下文,而不是每個活動的上下文。所以,你不必爲每個Activity初始化syncContext。可能你可以使用Gson()將它保存在SharedPreferences中。

MobileServiceClient mClient = new MobileServiceClient(
"<MobileAppUrl>",  // Replace with the Site URL 
this);     // Your application Context 

來源:[1]:https://docs.microsoft.com/en-us/azure/app-service-mobile/app-service-mobile-android-how-to-use-client-library

相關問題