Android Jetpack 套件之 Lifecycle 使用;
Jetpack 和 Lifecycle
Jetpack 是一个由多个库组成的套件,可帮助开发者遵循最佳做法,减少样板代码并编写可在各种 Android 版本和设备中一致运行的代码,让开发者集中精力编写重要的代码。
Jetpack 组件包括 4 个方面:架构(Architecture)、基础(Architecture)、行为(Behavior)、界面(UI):
而 Lifecycle 是用于帮助开发者管理Activity和Fragment 的生命周期,它是LiveData和ViewModel的基础,属于 Android 架构组件;
Lifecycle 使用方式
1 | getLifecycle().addObserver(Observer); |
被观察者(LifecycleOwner)
被观察者需要实现 LifecycleOwner 接口,比如对于 Activity,Activity —> AppCompatActivity —> FragmentActivity —> ComponentActivity —> LifecycleOwner,最终实现 LifecycleOwner 接口;
观察者(Observer)
其中 Observer 有 3 种:LifecycleEventObserver、DefaultLifecycleObserver、LifecycleObserver;
LifecycleEventObserver 接口
1 | getLifecycle().addObserver(new LifecycleEventObserver() { |
DefaultLifecycleObserver 接口
1 | getLifecycle().addObserver(new DefaultLifecycleObserver() { |
LifecycleObserver 接口
通过 OnLifecycleEvent 注解的方式实现
1 | getLifecycle().addObserver(new LifecycleObserver() { |
使用注解的方式已经废弃
优先级
那么这三种方式的优先级是什么呢,我们来看看 LifecycleEventObserver 接口和 DefaultLifecycleObserver 接口的注释:
1 | /** |
可以看出,如果一个观察者同时实现了 LifecycleEventObserver 和 DefaultLifecycleObserver,那么 DefaultLifecycleObserver 要先于 LifecycleEventObserver 执行,如果同时也添加了 OnLifecycleEvent 注解,那么注解部分会被忽略掉;