JetPack之lifecycles
一般写组件的时候,例如一个获取位置的小组件,我们会这么写。
|
|
我们会在onStart或onResume的时候注入监听,在onPause或onDestory的时候移除监听。如果我们有很多这样的小组件,维护起来很是麻烦。而且如果要在onStart的时候做配置回调,那么有可能onStop比onStart会提前结束。这样就更麻烦了。
Lifecycle
Lifecycle是一个持有其他组件(例如activity和fragment)的生命周期信息状态的一个类,它允许其他对象观察这个状态。
它有两个主要的成员和生命周期状态有联系。
Event。这个生命周期事件从framework和Lifecycle进行派发。这些事件对应activity和fragment中的生命周期回调。State。生命周期对象组件的当前状态。

一个类可以通过向其方法添加注解来监视组件的生命周期状态。然后,通过调用Lifecycle类的addObserver()方法来添加一个观察者。下面是示例代码。
|
|
在上面的示例中,myLifecycleOwner对象实现了LifecycleOwner接口。
LifecycleOwner
`Lifecycle``可以查看当前对象的生命周期。123if (lifecycle.getCurrentState().isAtLeast(STARTED)) { // do something}
Fragment和Activitie在Support Library26.1.0之后就已经实现了LifecycleOwner接口。