| 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 <T> LifecycleTransformer<T> 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()); | 
|             } | 
|         }; | 
|     } | 
|   | 
| } |