gpt4 book ai didi

android - Observable 似乎在一段时间后不会调用 onNext

转载 作者:行者123 更新时间:2023-11-30 01:38:14 24 4
gpt4 key购买 nike

我正在使用 RxAndroid 库来处理使用订阅者/可观察模式的项目列表。我的问题是,当一个项目被处理时,有一个进度条需要更新。但是在处理了 16 个项目之后,似乎 observable 没有调用 onNext 方法,直到处理完其余项目(90)然后调用 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)));
}

recognize 方法处理图像很辛苦,我的第一个想法是这个方法消耗大量内存,在所有方法调用完成之前,observable 无法将处理后的项目交付给订阅者。但我不太确定,谁能证实这一点?

谢谢!

最佳答案

嗯,我想我已经解决了!问题是使用 flatMap 而不是 concatMap。这里有很好的解释:http://fernandocejas.com/2015/01/11/rxjava-observable-tranformation-concatmap-vs-flatmap/

关于android - Observable 似乎在一段时间后不会调用 onNext,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34858247/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com