Lifecycles组件可以让任何一个类都能轻松感知到Activity的生命周期,同时又不需要在Activity中编写大量的逻辑处理。
Lifecycles的简单使用:
新建一个MyObserver类,并让它实现LifecycleObserver接口,在方法上使用@OnLifecycleEvent注解,并传入了一种生命周期事件,生命周期事件的类型一共又七种:ON_CREATE、ON_START、ON_RESUME、ON_PAUSE、ON_STOP、ON_DESTROY分别匹配Activity中相应的生命周期回调;另外还有一种ON_ANY类型,表示可以匹配Activity的任何生命周期回调。
class MyObserver:LifecycleObserver{ @OnLifecycleEvent(Lifecycle.Event.ON_START) fun activityStart(){ Log.d("MyObserver","activityStart") } @OnLifecycleEvent(Lifecycle.Event.ON_STOP) fun activityStop(){ Log.d("MyObserver","activityStop") } }
只要你的Activity是继承自AppCompatActivity的,或者你的Fragment是继承androidx.fragment.app.Fragment的,那么它们本身就是一个LifecycleOwner的实例。在MainActivity中写
lifecycle.addObserver(MyObserver())
MyObserver就可以感知Activity的生命周期了
否则,就要这样写
lifecycleOwner.lifecycle.addObserver(MyObserver())
主动获知当前的生命周期状态
1.在MyObserver的构造函数中将Lifecycle的对象传入即可
class MyObserver(val lifecycle:Lifecycle):LifecycleObserver{ ... }
2.然后在任何地方调用lifecycle.currentState来主动获取当前的生命周期状态。
Activity生命周期状态与事件的对应关系如图