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 Library
26.1.0之后就已经实现了LifecycleOwner
接口。