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生命周期状态与事件的对应关系如图

 

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐