RxAndroid ライブラリを使用して、サブスクライバー/オブザーバブル パターンを使用してアイテムのリストを処理しています。私の問題は、アイテムが処理されると、更新が必要な進行状況バーがあることです。しかし、16 個のアイテムを処理した後、残りのアイテム (90 個) が処理されてから onNext メソッドを 90 回呼び出すまで、オブザーバブルは onNext メソッドを呼び出していないようです。なぜこうなった?これはメモリの問題ですか?
以下のコード。
加入者:
public void startSingleRecognition(int id, int position) {
mAdapter.updateItemProgress(0, position);
Uri imageUri = Uri.parse(getHpCard(id).getUrlImage());
final int[] i = {0};
mSubscription = mRecognitionUtils
.getRecognitionObservable(imageUri, configurations)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(
abbyResult -> mAdapter.updateItemProgress(++i[0], position),
e -> e.printStackTrace(),
() -> mAdapter.updateItemProgress(-1, position));
}
観測可能:
public Observable<AbbyResult> getRecognitionObservable(Uri imageUri,
ArrayList<Configuration> configurations) {
return Observable.from(configurations)
.flatMap(
configuration -> Observable.just(recognize(imageUri, configuration, this)));
}
メソッドを認識して画像を処理するのは大変です。最初に考えたのは、このメソッドは多くのメモリを消費しており、すべてのメソッド呼び出しが完了するまで、オブザーバブルは処理されたアイテムをサブスクライバーに配信できないということでした。しかし、私は本当に確信が持てません、誰かがこれを確認できますか?
ありがとう!