定义
lifecycle就是对activity和fragment生命周期进行监控。一般不会独立使用,都是配合livedata 和viewmodel使用。避免内存泄漏
总结原理流程
1.在Androidx 之后,componentActivity 默认实现LifeCycleOwner接口,实现getLifecycle()方法,返回LifecycleRegistry(Lifecycle是抽象类,继承lifecycle)实例对象,把本身this作为构造参数,传给lifecycleRegistry。
2.在onCreate方法中,通过ReportFragment.inectIfNeedIn(this),创建空白fragment,添加到activity,用以监听activity的生命周期
3.通过空白fragment的生命周期函数,来分发lifecycle的事件(onActivityCreate 对应分发 lifecycle的on_create事件)dispatch(Lifecycle.event.on_start)
4.最后调用lifecycle的HandelLifecycleEvent(event)
5.在LifecycleRegistry的handleLifecycleEvent(event)方法中,主要执行三个操作,先判断调用的方法是否在主线程中,否则抛出异常,然后根据event 事件,来得到对应的status状态,最后进行状态对齐。
6.在进行状态对齐的时候,分为前进过程或者倒退流程两种,更新了状态之后,再根据状态得到事件,然后再次分发
Lifecycle 维护状态mState,主要是为了LiveData 等组件库使用,通过mState判断 mActive状态,是否处于激活状态,以此决定是否要进行数据分发。
7.在被观察者中通过 Lifecycle.addOberver(LifecycleObserver) 绑定观察者的时候,就是把观察者存储map中,为了后面事件分发的时候 ,通过反射调用观察者的相应方法。
8.通过ObserverWithState 分发事件,调用LifecycleEventObserver(这是个接口) 的onStateChanged(lifecycleOwner,event)方法,在实现类ReflecttiveGenericLifecycleOberver 通过反射,调用观察者 对应的方法