Android RxJava 关于网络请求时线程调度的封装

一、问题背景

        之前在做项目使用 RxJava 写有关网络请求的代码的时候,因为对于网络的请求需要在 IO 线程中进行,而 UI 的更新则必须在主线程,所以总是要进行翻来覆去的进行固定的线程切换,我就想是不是可以将这种重复的工作抽离出来,于是上网搜索了相关的 RxJava 的网络请求封装,网上对于 RxJava 网络请求的封装还是挺多的,但是最如果只想要实现最简单的网络请求时的线程切换,只需要两个相关的方法就可以了。

        使用时直接通过 compose() 进行调用就可以了。

二、相关代码

public class RxScheduler {


    /**
     * 统一线程处理
     *
     * @param  指定的泛型类型
     * @return FlowableTransformer
     */
    public static  FlowableTransformer Flo_io_main() {
        return new FlowableTransformer() {
            @Override
            public Publisher apply(@NonNull Flowable upstream) {
                return upstream.subscribeOn(Schedulers.io())
                        .observeOn(AndroidSchedulers.mainThread());
            }
        };
    }

    /**
     * 统一线程处理
     *
     * @param  指定的泛型类型
     * @return ObservableTransformer
     */
    public static  ObservableTransformer Obs_io_main() {
        return new ObservableTransformer() {
            @Override
            public ObservableSource apply(Observable upstream) {
                return upstream.subscribeOn(Schedulers.io())
                        .observeOn(AndroidSchedulers.mainThread());
            }
        };
    }

}

 

你可能感兴趣的:(Android)