一、概念
生命周期感知型组件可执行操作来响应另一个组件(如 Activity 和 Fragment)的生命周期状态的变化。这些组件有助于您编写出更有条理且往往更精简的代码,此类代码更易于维护。
一种常见的模式是在 Activity 和 Fragment 的生命周期方法中实现依赖组件的操作。但是,这种模式会导致代码条理性很差而且会扩散错误。通过使用生命周期感知型组件,您可以将依赖组件的代码从生命周期方法移入组件本身中。
二、LifeCycles的使用
1.添加依赖
implementation 'androidx.lifecycle:lifecycle-common-java8:2.2.0'
只有添加这个依赖才能使用DefaultLifecycleObserver。
2.推荐使用方法
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
lifecycle.addObserver(object : DefaultLifecycleObserver {
override fun onCreate(owner: LifecycleOwner) {
}
override fun onResume(owner: LifecycleOwner) {
}
override fun onDestroy(owner: LifecycleOwner) {
}
})
}
注意点:DefaultLifecycleObserver是个抽象类,需要实现下。
3.自定义的使用方式
class MyLifeCycle :LifecycleObserver{
@OnLifecycleEvent(Lifecycle.Event.ON_START)
fun activityStart() {
Log.e("lifecycleObserver","start")
}
@OnLifecycleEvent(Lifecycle.Event.ON_PAUSE)
fun activityPause() {
Log.e("lifecycleObserver","pause")
}
}
该方式需要实现LifecycleObserver接口,通过注解标记回调@OnLifeycleEvent(Lifecycle.Event.XXX),通用的注解有:ON_CREATE、ON_START、ON_RESUME、ON_PAUSE、ON_STOP、ON_DESTROY、ON_ANY。
4.添加观察者
lifecycleOwner.lifecycle.addObserver(observer())
无论是上面的2或3实现的方式,都是需要添加观察者的。
三、其他
其实实现生命周期的监听也可以使用Application的registerActivityLifecycleCallbacks方法,该方法是能做到全局监听。使用则是在Application的onCreate方法中添加如下代码:
registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks(){
@Override
public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
}
@Override
public void onActivityStarted(Activity activity) {
}
@Override
public void onActivityResumed(Activity activity) {
}
@Override
public void onActivityPaused(Activity activity) {
}
@Override
public void onActivityStopped(Activity activity) {
}
@Override
public void onActivitySaveInstanceState(Activity activity, Bundle outState) {
}
@Override
public void onActivityDestroyed(Activity activity) {
}
参考文档:
LifeCycles官网:https://developer.android.google.cn/topic/libraries/architecture/lifecycle
csdn介绍lifecycle:https://blog.csdn.net/nity_/article/details/117707720
简书介绍lifecycle:https://www.jianshu.com/p/128b655e10ee
网友评论