RxLifeRecycle
Lifecycleable 所有生命周期控制类的父类,是一个接口
提供了这个方法
Subject<E> provideLifecycleSubject();
Subject<T> extends Observable<T> implements Observer<T>{}
所有被生命周期控制的方法都保存了一个 BehaviorSubject 实例,
它只会保存最新的一个事件,其他事件他都不会care
BehaviorSubject<FragmentEvent> mLifecycleSubject = BehaviorSubject.create();
ActivityLifecycleForRxLifecycle implements Application.ActivityLifecycleCallbacks
mApplication.registerActivityLifecycleCallbacks(mActivityLifecycleForRxLifecycle);
这个类只要一用Application注册就可以监听Activity的生命周期
ActivityLifecycleForRxLifecycle 中的
Subject<ActivityEvent> obtainSubject(Activity activity) 可以获取到Actiivty中的BehaviorSubject对象
在对应的生命周期方法中并且传入生命周期标志
obtainSubject(activity).onNext(ActivityEvent.DESTROY)
所有只要Activity的生命周期方法执行,onNext就会执行,并且传入对应的
事件
此时等于BehaviorSubject监听到了Activity的所有事件,并保存最后发生的那个事件
此时使用
RxLifecycleUtils .bindToLifecycle(mRootView){
RxLifecycleAndroid.bindActivity(((ActivityLifecycleable) lifecycleable).provideLifecycleSubject())
}
对于Fragment,只要注册了这个FragmentLifecycleForRxLifecycle就可以监听到Fragment的生命周期
((FragmentActivity) activity).getSupportFragmentManager().registerFragmentLifecycleCallbacks(mFragmentLifecycle.get(), true);
就可以实现和Activity一样的逻辑