2017-11-16 7 views
0

私のアプリケーションのテスト中に見つかったもの。私はrealmデータベースにいくつかのデータをコピーし、次に他のプロセス、すなわちSyncAdapterからrealm.executeTransactionAsyncコールを使用してコピーまたは更新メソッドによってデータを更新します。同期を複数回実行し、アプリを後から削除します。データは古いデータにロールバックされます。いずれにもこれに対する解決策がありますか?以下は私のコードスニペットです:realm.executeTransactionAsyncメソッドを使用しているときにトランザクション '' realm.commitTransaction ''をコミットする必要がありますか?

final Realm realm = getRealm(); 
     realm.executeTransactionAsync(new Realm.Transaction() { 
      @Override 
      public void execute(Realm realm) { 
       for (GetProductPriceResModel priceResModel : resBeanList) 
        priceResModel.generateSearchData(); 
       realm.copyToRealmOrUpdate(resBeanList); 
       realm.commitTransaction(); 
      } 
     }, new Realm.Transaction.OnSuccess() { 
      @Override 
      public void onSuccess() { 
       if (callBack != null) callBack.onSuccess(); 
       closeRealm(realm); 
      } 
     }, new Realm.Transaction.OnError() { 
      @Override 
      public void onError(Throwable error) { 
       if (callBack != null) callBack.onFailure(error); 
      } 
     }); 
+0

ありませんあなたは、バックグラウンドトランザクションをコミットするべきではありません、それが内部的に行われています – EpicPandaForce

答えて

0

あなたがexecuteTransactionexecuteTransactionAsyncを使用し、その後、あなたは自動的に領域自体によって呼び出され、beginTransaction & commitTransactionを呼び出す必要はありません。

Source

関連する問題