我写了一个方法来打印flatMap(伪代码)的输出:
Observable.just(...).repeat()
.flatMap( return Observable.just([double]))
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Subscriber<Double>() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
tvConfidence.setText(e.getMessage());
}
@Override
public void onNext(Double aDouble) {
tvConfidence.setText("Confidence :" + aDouble);
}
});
当我运行这些代码时,它会工作几秒钟,但几秒钟后,它将不会再次运行到onNext
方法。我不知道为什么,因为我调试代码,它将运行Observable.just(double)
,并且值始终更改,但它不会执行代码setText
来刷新textView
。< / p>
答案 0 :(得分:1)
我的猜测是,由于特定的flatMap
重载,您最终会开始积累大量just
,因为flatMap
是无限制的。尝试使用flatMap(f, 1)
来限制并发级别。