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

Мое предположение заключается в том, что из-за этой перегрузки вы в конце концов начнете накапливать много just, потому что flatMap не имеет границ. Попробуйте с flatMap(f, 1) ограничить уровень параллелизма.

+0

Thank u! Я меняю flatMap на карту, и он работает. Может быть, я не должен использовать flatMap в этом случае. – Even2015