Lifecycle的实现原理

Lifecycle的作用是:生命周期感知型组件可执行操作来响应另一个组件(如 Activity 和 Fragment)的生命周期状态的变化。这些组件有助于您写出更有条理且往往更精简的代码,这样的代码更易于维护。

Lifecycle 的原理其实就是通过 LifecycleOwner 和 LifecycleRegistry 之间的关联,来实现对组件生命周期的管理。 当 LifecycleOwner 的生命周期事件发生时,LifecycleRegistry 会通知所有注册的 LifecycleObserver 对象,让它们执行相应的操作

1、Activity 实现了 LifeycleOwner 并持有一个生命周期,在创建 Activity 的时候也同时创建了
ReportFragment(一个无 U1的fragmen),ReponFragmen 生命周期变化时会触发 dispatch事件,
2、由 LifecyclcRegisty让 Activity 得到一个 Lifecycle, 也就是 Activiry通过实现了 LifecyeleOwner持
有生命周期 Lifecycle。
3、通过添加 addObserver(观察者)得到一个ObserverWithState对象,将ObserverWithState对象添到mObservcrMap中。
4、创建ObserverWithState 该对象的时候会创建新的装饰的观察者FullLifecycleObserverAdapter、implements LifecycleEvenObserver。有个onStateChange()法,该方法由上面的生命周期变化的时候触发。onSlateChange该方法有个 switch 判断生命周期事件,从而调用我们自己创建的观察者对应的
方法。
5、ReportFragment什么周期变化时触发的 dispatch 会经过一系列转换,后通过
forwardPass/backwardPass 调用 FullLifecyclcObserverAdapter的 onStateChange。准换过程中涉及到的类LifecycleRegister.

  • 8
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值