【问题标题】:Make All Observables subscribeon and observeon something让所有 Observables 订阅并观察某事
【发布时间】:2017-07-25 06:50:58
【问题描述】:
我正在我的 android 应用程序中使用改造和 rxjava 实现 http 请求。
我反复有这个块代码:
apiService.getFromServer()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
...
有没有办法不重复?
【问题讨论】:
标签:
android
retrofit
rx-java
rx-android
【解决方案1】:
是的,您可以将compose 运算符与Transformer 对象一起使用,该对象会将可观察的输入转换为订阅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 了解这一点。