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