以下のメソッドをの順番で実行します。つまり、Aメソッドが終了すると、Bが開始されます。 Bが終わったらCが始まります。レルム非同期トランザクションAndroidの注文構造
public void InitializeAPI {
public static void init_A(Context mContext) {
Realm.init(mContext);
Realm realm = Realm.getDefaultInstance();
realm.executeTransactionAsync(new Realm.Transaction() {
@Override
public void execute(Realm realm) {
// Some working is here.
}
}, new Realm.Transaction.OnSuccess() {
// Some proceesing lines are here.
}, new Realm.Transaction.OnError() {
Log.d("AsyncTransaction", "ERROR");
});
// And there are lots of other TransactionAsync() line in this methods.
}
public static void init_B(Context mContext) {...}
public static void init_C(Context mContext) {...}
// and So many initialize methods.
}
あなたが見ることができるように、私はinit_A(Context)
を実行すると、非同期トランザクションは、バックグラウンドになります。
しかし、init_B
は、init_A
終了後に実行する必要があります。 init_C
もあります。どうすればこの問題を設計できますか?もちろん
、私はinit_A
でRealm.Transaction.OnSuccess()
でinit_B
を記述する場合、私はコードがメンテナンスにそのまま、または良くないだろうと思い、Realm.Transaction.OnSuccess()
があることを知っているが。代わりに、非同期呼び出しの
realm.beginTransaction();
//... add or update objects here ...
realm.commitTransaction();
:
(残念ですが返信)しかし、クラス名「InitializeAPI」がわかるように、HTTPリクエストと解析コードがたくさんあります。それが非同期でない場合は、低性能(低速)ではありませんか? – TyeolRik
約600件のリクエストがあります。 – TyeolRik
RealM libのメソッド** executeTransactionAsync **のコードをチェックしようとすると、同じrealm.beginTransaction();を使用していることがわかります。 realm.commitTransaction(); yes 600は膨大な数値ですが、executeTransactionAsyncメソッドのコードを最初に確認してください。 (Ctrl +クリックして使用してください) –