package com.doumee.lib_coremodel.http.utils; import android.content.Context; import androidx.fragment.app.Fragment; import com.trello.rxlifecycle2.LifecycleProvider; import com.trello.rxlifecycle2.LifecycleTransformer; import io.reactivex.Observable; import io.reactivex.ObservableSource; import io.reactivex.ObservableTransformer; import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.annotations.NonNull; import io.reactivex.schedulers.Schedulers; /** * Created by goldze on 2017/6/19. * 有关Rx的工具类 */ public class RxUtils { /** * 生命周期绑定 * * @param lifecycle Activity */ public static LifecycleTransformer bindToLifecycle(@NonNull Context lifecycle) { if (lifecycle instanceof LifecycleProvider) { return ((LifecycleProvider) lifecycle).bindToLifecycle(); } else { throw new IllegalArgumentException("context not the LifecycleProvider type"); } } /** * 生命周期绑定 * * @param lifecycle Fragment */ public static LifecycleTransformer bindToLifecycle(@NonNull Fragment lifecycle) { if (lifecycle instanceof LifecycleProvider) { return ((LifecycleProvider) lifecycle).bindToLifecycle(); } else { throw new IllegalArgumentException("fragment not the LifecycleProvider type"); } } /** * 生命周期绑定 * * @param lifecycle Fragment */ public static LifecycleTransformer bindToLifecycle(@NonNull LifecycleProvider lifecycle) { return lifecycle.bindToLifecycle(); } /** * 线程调度器 */ public static ObservableTransformer schedulersTransformer() { return new ObservableTransformer() { @Override public ObservableSource apply(Observable upstream) { return upstream.subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()); } }; } }