2017-08-07 3 views
0

サーバからデータを取得しようとしています。RxJava2、改装 - doOnNext、doAfterNext、doOnCompleteが呼び出されない

Observable<List<Countries>> backendObservable = mCountriesApi.getCountries() 
      .subscribeOn(Schedulers.newThread()) 
      .observeOn(AndroidSchedulers.mainThread()); 

backendObservable.doOnNext(list -> Log.d(TAG, "doOnNext")); 
backendObservable.doAfterNext(list -> Log.d(TAG, "doAfterNext")); 
backendObservable.doOnComplete(() -> Log.d(TAG, "doOnComplete")); 

backendObservable.subscribe(new Observer<List<Country>>() { 
     @Override 
     public void onSubscribe(Disposable d) { 

     } 

     @Override 
     public void onNext(List<Country> value) { 
      Log.d(TAG, "doOnNext")); 
     } 

     @Override 
     public void onError(Throwable e) { 

     } 

     @Override 
     public void onComplete() { 

     } 
    }); 

"onNext"にデータを受け取ります。しかし、メソッドdoOnNext、doAfterNext、doOnCompleteは呼び出しません。 私は間違って何をしていますか?

答えて

0

observeOnまでお手元に届きましたか?より簡潔

backendObservable = backendObservable.doOnNext(list -> Log.d(TAG, "doOnNext")); 
backendObservable = backendObservable.doAfterNext(list -> Log.d(TAG, "doAfterNext")); 
backendObservable = backendObservable.doOnComplete(() -> Log.d(TAG, "doOnComplete")); 

または

Observable<List<Countries>> backendObservable = mCountriesApi.getCountries() 
     .subscribeOn(Schedulers.newThread()) 
     .observeOn(AndroidSchedulers.mainThread()) 
     .doOnNext(list -> Log.d(TAG, "doOnNext")); 
     .doAfterNext(list -> Log.d(TAG, "doAfterNext")); 
     .doOnComplete(() -> Log.d(TAG, "doOnComplete")); 
     .subscribe(...); 
+0

感謝します:彼らは不変のデータフロー計画されているので、あなたはObservableのチェーンオペレータに持っています。その作品。 –

関連する問題