私は基本レルム要求を扱うダガーシングルトンラッパーを持っています。その1つは次のようになります。レルム - 非同期キューの実装
public void insertOrUpdateAsync(final List<RealmMessage> messages, @Nullable final OnInsertListener listener) {
Realm instance = getRealmInstance();
instance.executeTransactionAsync(realm -> {
List<RealmMessage> newMessages = insertOrUpdateMessages(realm, messages);
},
() -> success(listener, instance),
error -> error(listener, error, instance));
}
private List<RealmMessage> insertOrUpdateMessages(@NonNull Realm realm, @NonNull final List<RealmMessage> messages) {
...
return realm.copyToRealmOrUpdate(unattendedMessages);
}
しかし、 - 長いストーリーショート - 私はinsertOrUpdateAsynch()を何度も起動するコーナーケースがあります。そして、いくつかの要求の後、私はこれを取得:
Caused by: java.util.concurrent.RejectedExecutionException: Task [email protected] rejected from [email protected][Running, pool size = 17, active threads = 17, queued tasks = 100, completed tasks = 81]
私の質問は:私は、アプリケーション全体の流れを再構築することなく、これをどのように処理しますか。 私の考えは、RxJava経由で着信要求をキューに入れることでした。私は正しい?どの事業者を自分で検討し、教育すべきですか?
まったく間違った方法でこれに近づいていますか? 私のグーグルのほとんどから、私はループの中で私のような方法を起動することに問題があることに気づいた。私は何も使っていない。私の場合、このメソッドは複数のレスポンスによって起動され、現在のバックエンド実装のために変更することは不可能です。