2016-06-20 538 views
1

我写了一个方法来打印从flatMap(伪代码)输出:当我运行这些代码Rxjava为什么没有执行onNext方法

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

回答

1

我的猜测是,由于那个特殊的flatMap过载,你最终开始积累很多just,因为flatMap是无界限的。尝试使用flatMap(f, 1)来限制并发级别。

+0

谢谢你!我将flatMap更改为map,并且它可以工作。也许我不应该在这种情况下使用flatMap。 – Even2015