Lifecycle UML图

UML图

图解关键点

为什么 LifeCycler 可以监测生命周期?

当Acitivty onCreate、onDestroy 等声明周期回调时,在 ComponentActivity(Actvity的父类)会调用 LifecycleRegistry#handleLifecycleEvent,用于保存当前生命周期的状态State,同时在 moveToState 方法里面,回调观察者们的 mLifecycleObserver.onStateChanged 方法,

lifecycleScope 如何初始化的?

  1. lifecycleScope 作为 LifecycleOwner 的扩展变量(其实进一步是 Lifecycle 的扩展变量),在 Activity 里面可以直接拿到,lifecycleScope内部get方法进行初始化。

  2. 初始化对象为 LifecycleCoroutineScopeImpl。内部会在 register 方法里面调用 LifecycleRegistry(Lifecycle的子类) 的 addObserver,注册观察者,保存进 mObserverMap 里面。

lifecycleScope 什么时候销毁的?

onStateChanged 在 LifecycleCoroutineScopeImpl 内部实现就是在状态是 onDestroy 的时候移除。

坚持原创技术分享,您的支持将鼓励我继续创作!