前言
Lifecycle是Jetpack重要组件。管理Fragment和Activity等组件的生命周期。
- 在Activity或Fragment销毁时释放资源
- 在Activity或Fragment活跃状态时更新数据
- 在Activity或Fragment暂停状态时暂停某些操作。
Lifecycle核心时状态:5种状态
- INITIALIZED:Lifecycle初始化完成,Activity和Fragment还未被创建
- CREATED:Activity或Fragment已经被创建,还未显示
- STARTED:Activity或Fragment已经显示,但未获得焦点
- RESUMEED:Activity或Fragment获得焦点,处于活动状态
- DESTROYED:Activity或Fragment被销毁
7种事件:
- ON_CREATE:onCreate
- ON_START:onStart
- ON_RESUME:onResume
- ON_PAUSE:onPause
- ON_STOP:onStop
- ON_DESTROY:onDestroy
- ON_ANY:匹配任何事件
Lifecycle原理
基于观察者模式:LifecycleOwner,LifecycleRegistry和LifecycleObserver
- LifecycleOwner:接口,生命周期的组件,Activity和Fragment都实现了该接口。
- LifecycleRegistry:类,负责管理LifecycleOwner生命周期状态,通知给已经注册的观察者(LifecycleObserver)。
- LifecycleObserver:接口,观察者,观察LifecycleOwner生命周期组件的状态。
Lifecycle实现原理:
- LifecycleOwner创建一个Lifecycle实例
- Lifecycle实例本质是LifecycleRegistry,它把自己的状态体哦国内之给注册的观察者(LifecycleObserver).
- LiecycleObserver:观察者,收到状态变化后,用户根据状态进行操作。
注意点
- LifecycleOwner和LifecycleObserver是单向的。LifecycleOwner可以注册多个LifecycleObserver(观察者),但观察者只能有一个LifecycleOwner(被观察者)。LifecycleOwner接口是对应的Activity和Fragment都进行了实现,所以理解为一个。
- 在观察者方法中,尽量避免执行耗时操作
- Activity或Fragment生命周期状态变化时,只需要通知需要收到通知的观察者(处于活动状态的)