2016-06-20 71 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