package com.xiecc.seeWeather.common.utils; import com.trello.rxlifecycle2.android.ActivityEvent; import com.trello.rxlifecycle2.android.FragmentEvent; import com.trello.rxlifecycle2.components.support.RxAppCompatActivity; import com.trello.rxlifecycle2.components.support.RxFragment; import io.reactivex.FlowableTransformer; import io.reactivex.ObservableTransformer; import io.reactivex.Scheduler; import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.schedulers.Schedulers; /** * Created by HugoXie on 16/5/19. * * Email: Hugo3641@gamil.com * GitHub: https://github.com/xcc3641 * Info: 封装 Rx 的一些方法 */ public class RxUtil { private static <T> ObservableTransformer<T, T> schedulerTransformer(Scheduler scheduler) { return observable -> observable .subscribeOn(scheduler) .observeOn(AndroidSchedulers.mainThread(), true); } public static <T> ObservableTransformer<T, T> io() { return schedulerTransformer(Schedulers.io()); } private static <T> FlowableTransformer<T, T> schedulerTransformerF(Scheduler scheduler) { return flowable -> flowable .subscribeOn(scheduler) .observeOn(AndroidSchedulers.mainThread(), true); } public static <T> FlowableTransformer<T, T> ioF() { return schedulerTransformerF(Schedulers.io()); } public static <T> ObservableTransformer<T, T> activityLifecycle(RxAppCompatActivity activity) { return observable -> observable.compose(activity.bindUntilEvent(ActivityEvent.DESTROY)); } public static <T> ObservableTransformer<T, T> fragmentLifecycle(RxFragment fragment) { return observable -> observable.compose(fragment.bindUntilEvent(FragmentEvent.DESTROY)); } public static <T> FlowableTransformer<T, T> activityLifecycleF(RxAppCompatActivity activity) { return flowable -> flowable.compose(activity.bindUntilEvent(ActivityEvent.DESTROY)); } public static <T> FlowableTransformer<T, T> fragmentLifecycleF(RxFragment fragment) { return flowable -> flowable.compose(fragment.bindUntilEvent(FragmentEvent.DESTROY)); } }