2017-02-18 10 views
1

Azure Mobile Services Android SDKでオフライン同期を使用する場合、一部のテーブルへのアクセスが必要な各アクティビティでMobileServiceSyncContext.initializeを呼び出す必要がありますか?もしそうなら、なぜですか?ローカルデータベースを一度だけ初期化しないでください。私はすべて間違っているのですか?メソッドinitializeが呼び出されるたびに、すでに存在していても、すべてのテーブルを作成しようとするたびに、それはあまり良くありません。 syncContextを初期化する方法はありますか?少なくとも、syncContextが初期化されるたびにテーブルを作成するためにSQLスクリプトを実行するフレームワークは避けてください。各アクティビティで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

Android向けのAzureモバイルアプリSDKの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の場合、すべてのアクティビティのコンテキストではなく、アプリケーションのコンテキストが必要です。したがって、すべてのアクティビティに対して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

関連する問題