android - 让所有 Observables 订阅并观察某事

标签 android retrofit rx-java rx-android

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

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

有没有办法不重复这个?

最佳答案

是的,您可以将 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对此。

关于android - 让所有 Observables 订阅并观察某事,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42608049/

相关文章:

android - Eclipse:奇怪的语法错误

android - 如何在改造中传递参数

java - 有没有办法使用 RxJava 让方法在多个线程上运行

java - Android studio 如何一次创建注册屏幕

android - 如何清除添加/删除操作栏的动画?

java - Android:表示接口(interface)的所有字段都是@Nullable

android - 使用内容类型 text/html 改造响应错误

java - 实现重复性作业,每秒重复次数不超过一次

java - 测试用例运行时不会调用 Rx onErrorReturn

android - Recycler View 双向滚动