2017-03-05 75 views
2

我在我的android應用中使用retrofit和rxjava實現http請求。 和我有這個代碼塊重複:使所有Observable subscribeon和觀察某事

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

有沒有辦法在此不贅述?

回答

5

是的,你可以使用compose運營商與Transformer對象,將改變輸入可觀察到Observable,訂閱的IO,觀察者對mainThread(或任何其它轉換你喜歡的課程)

<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