package com.hjx.parent.rx; import com.trello.rxlifecycle2.android.ActivityEvent; import com.trello.rxlifecycle2.android.RxLifecycleAndroid; import io.reactivex.Observable; import io.reactivex.ObservableSource; import io.reactivex.ObservableTransformer; import io.reactivex.Observer; import io.reactivex.Single; import io.reactivex.SingleObserver; import io.reactivex.SingleTransformer; import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.disposables.Disposable; import io.reactivex.functions.Consumer; import io.reactivex.schedulers.Schedulers; import retrofit2.Call; // 抽象 public interface ILifecycleActivity { Observable getRxLifecycle(); default Single getSingleResult(Call call) { return Single.just(call) .map(t -> t.execute().body()) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .compose(RxLifecycleAndroid.bindActivity(getRxLifecycle())); } default void subscribeSingle(Single single, SingleObserver observer) { single.subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .compose(RxLifecycleAndroid.bindActivity(getRxLifecycle())) .subscribe(observer); } default void subscribeRx(Observable observable, Observer observer) { observable.subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .compose(RxLifecycleAndroid.bindActivity(getRxLifecycle())) .subscribe(observer); } default Disposable subscribeRx(Observable observable, Consumer onNext) { return observable.subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .compose(RxLifecycleAndroid.bindActivity(getRxLifecycle())) .subscribe(onNext); } default ObservableTransformer transform() { return upstream -> upstream.subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .compose(RxLifecycleAndroid.bindActivity(getRxLifecycle())); } default SingleTransformer transformSingle() { return upstream -> upstream.subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .compose(RxLifecycleAndroid.bindActivity(getRxLifecycle())); } }