让所有 Observables 订阅并观察某事

Make All Observables subscribeon and observeon something

我正在我的 android 应用程序中使用改造和 rxjava 实现 http 请求。 我反复有这个块代码:

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

有没有办法不重复这个?

是的,您可以将 compose 运算符与 Transformer 对象一起使用,将输入 observable 转换为订阅 io 的 Observable,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 相关内容。