- 让观测生命周期的代码不用写到activity里面了,避免过多的代码量和耦合性
Lifecycle是什么?
- 从源码里拷出来,去掉注释,就剩下Lifecycle的抽象类,发现他是一个观察者
- 首先,了解事物的本质
Lifecycle怎么用?
-
写代码体验一下
-
新建项目,添加第一张图右边的依赖,如果是kotlin注意要加kapt
-
新建观察者
-
其实可以直接实现他的父类,他的父类不要实现任何方法,而且这个方法对我们当前没有用
-
我们想要观察activity生命周期需要怎么做呢?
-
我们需要编写一个方法,方法名随意
-
绑定activity
-
activity实现了Lifecycle接口,接口中有一个方法获取Lifecycle,调用他,获取lifecycle,然后绑定观察者
过一下源码
-
先看在activity里面是怎么实现的?
-
ComponentActivity实现了LifecycleOwner接口,
-
提供一个getLifecycle的方法
-
这个方法返回的是LifecycleRegistry(注册者、登记者)
- LifecycleRegistry就是一个Lifecycle
-
同样有他的add,remove方法
-
他是怎么感应activity的周期的呢?然后调用setState,setCurrentState方法的呢?
-
在他的ComponentActivity的onCreat里面找这个东西
-
他们在包里面是平级的,肯定有关系
- ReportFragment是一个Fragment
- 他把自己注入到了activity中,activity里面的fragment当然也会跟随activity同步他的生命周期
- 然后在什么周期中dispatch
- dispatch将消息传递到Lifecycle