Lifecycle是一个抽象类,用来存储生命周期状态的。
Lifecycle是Android中引入的主要用来观察和监听Activity、Fragment生命周期的一套观察者机制,还可以绑定Service和Application的生命周期,其实只要有生命周期的组件都可以跟它绑定。而在Android中大多数的组件都是有生命周期的。
在Lifecycle机制中有两个核心类。
一个是LifecycleOwner接口,该接口有一个getLifecycle()方法,实现了这个接口的类就可以作为一个被观察者,AppCompatActivity和Fragment就实现了这个接口,所以它们的生命周期就可以被观察和监听。
另一个是LifecycleObserver接口,实现了这个接口的类就可以作为一个观察者。当然你也可以换成实现LifecycleObserver接口的子类,比如DefaultLifecycleObserver,这个接口是LifecycleObserver的子类的子类,实现它也是可以作为一个观察者,来观察Activity、Fragment生命周期的。
基本使用如下:
1、自定义一个观察者类
class CustomLifecycleObserver : LifecycleObserver {
//监听onStart生命周期
@OnLifecycleEvent(Lifecycle.Event.ON_START)
fun method2() {
Log.e("znh", "LifecycleObserver_ON_START...")
}
//监听onResume生命周期
@OnLifecycleEvent(Lifecycle.Event.ON_RESUME)
fun method3() {
Log.e("znh", "LifecycleObserver_ON_RESUME...")
}
}
2、创建一个AppCompatActivity作为被观察者
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
//将自定义的观察者对象添加到观察者集合中
//通过lifecycle将观察者和被观察者关联起来
lifecycle.addObserver(CustomLifecycleObserver())
}
override fun onStart() {
super.onStart()
Log.e("znh", "onStart...")
}
override fun onResume() {
super.onResume()
Log.e("znh", "onResume...")
}
}
3、打开MainActivity观察生命周期方法日志打印
从打印的日志中可以看出,当Activity中的生命周期方法回调时,都会回调LifecycleObserver中对应的监听方法,这样就完成了对Activity生命周期的观察和监听。