Android Lifecycle

58 阅读1分钟

前言

Lifecycle是Jetpack重要组件。管理Fragment和Activity等组件的生命周期。

  1. 在Activity或Fragment销毁时释放资源
  2. 在Activity或Fragment活跃状态时更新数据
  3. 在Activity或Fragment暂停状态时暂停某些操作。

Lifecycle核心时状态:5种状态

  1. INITIALIZED:Lifecycle初始化完成,Activity和Fragment还未被创建
  2. CREATED:Activity或Fragment已经被创建,还未显示
  3. STARTED:Activity或Fragment已经显示,但未获得焦点
  4. RESUMEED:Activity或Fragment获得焦点,处于活动状态
  5. DESTROYED:Activity或Fragment被销毁

7种事件:

  1. ON_CREATE:onCreate
  2. ON_START:onStart
  3. ON_RESUME:onResume
  4. ON_PAUSE:onPause
  5. ON_STOP:onStop
  6. ON_DESTROY:onDestroy
  7. ON_ANY:匹配任何事件

Lifecycle原理

基于观察者模式:LifecycleOwner,LifecycleRegistry和LifecycleObserver

  1. LifecycleOwner:接口,生命周期的组件,Activity和Fragment都实现了该接口。
  2. LifecycleRegistry:类,负责管理LifecycleOwner生命周期状态,通知给已经注册的观察者(LifecycleObserver)。
  3. LifecycleObserver:接口,观察者,观察LifecycleOwner生命周期组件的状态。

Lifecycle实现原理:

  1. LifecycleOwner创建一个Lifecycle实例
  2. Lifecycle实例本质是LifecycleRegistry,它把自己的状态体哦国内之给注册的观察者(LifecycleObserver).
  3. LiecycleObserver:观察者,收到状态变化后,用户根据状态进行操作。

注意点

  • LifecycleOwner和LifecycleObserver是单向的。LifecycleOwner可以注册多个LifecycleObserver(观察者),但观察者只能有一个LifecycleOwner(被观察者)。LifecycleOwner接口是对应的Activity和Fragment都进行了实现,所以理解为一个。
  • 在观察者方法中,尽量避免执行耗时操作
  • Activity或Fragment生命周期状态变化时,只需要通知需要收到通知的观察者(处于活动状态的)