2017-03-05 10 views
2

私はアンドロイドアプリでretrofitとrxjavaを使用してHTTPリクエストを実装しています。 と私は繰り返し、このブロックのコードを持っている:すべてObservablesをsubscribeonとobserveonにする

apiService.getFromServer() 
.subscribeOn(Schedulers.io()) 
.observeOn(AndroidSchedulers.mainThread()) 
... 

はこれを繰り返すない方法はありますか?

答えて

5

はい、あなたは(あなたはもちろんのように、または任意の他の変換)、mainThreadにオブザーバーをIOに加入しObservableに観察可能な入力を変換しますTransformerオブジェクトとcompose演算子を使用することができます

<T> Transformer<T, T> applySchedulers() { 
return new Transformer<T, T>() { 
    @Override 
    public Observable<T> call(Observable<T> observable) { 
     return observable.subscribeOn(Schedulers.io()) 
      .observeOn(AndroidSchedulers.mainThread()); 
    } 
    }; 
} 

とあなたのコード:

apiService.getFromServer()  
    .compose(applySchedulers()) 
    ... 

あなたはそれについてDan Lew's great postを読むことができます。

+0

ありがとう@yosriz。非常に便利なブログでした。 – rezandro

関連する問題