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生命周期状态与事件的对应关系如图
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/95974.html