android LifeCycle-简单使用和详细原理解析,Android开发必看

Lifecycle 用于存储有关组件(如 Activity 或 Fragment)的生命周期状态的信息,并允许其他对象观察此状态。

更通俗的说,你可一通过注册回调的方式,拿到我们activity的所有生命周期方法回调

下图展示了观察生命周期的机制的所有类型

使用方法

总的来说LifeCycle的使用非常简单,基本没什么好写的,使用方法的章节仅限于绝对新手参考。

说是徒劳的,先上一波简单使用的代码吧

代码展示

class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
lifecycle.addObserver(MainObserver())
}
}

class MainObserver : LifecycleObserver {
@OnLifecycleEvent(Lifecycle.Event.ON_CREATE)
fun create(){
logEE(“create”)
}
@OnLifecycleEvent(Lifecycle.Event.ON_START)
fun start(){
logEE(“start”)
}
@OnLifecycleEvent(Lifecycle.Event.ON_RESUME)
fun resume(){
logEE(“resume”)
}
@OnLifecycleEvent(Lifecycle.Event.ON_PAUSE)
fun pause(){
logEE(“pause”)
}
@OnLifecycleEvent(Lifecycle.Event.ON_STOP)
fun stop(){
logEE(“stop”)
}
@OnLifecycleEvent(Lifecycle.Event.ON_DESTROY)
fun destroy(){
logEE(“destroy”)
}
@OnLifecycleEvent(Lifecycle.Event.ON_ANY)
fun any(){
logEE(“any”)
}
}

运行后我们执行如下流程: 启动app-点击回退键退出app,查看生命周期日志打印:

效果展示

我们发现所有的生命周期回调都被调用了,并且每个生命周期调用后都会马上同步调用ON_ANY注解的方法

使用LifeCycle处理异常状态

异常状态说明

我所说的异常状态需要举一个例子:

比如我们现在启动了一个耗时任务去请求网络,然后当网络请求完成后要回来更新ui,我们的异常状态就是指网络请求完成前我们主动关闭了activity。正常情况下这个时候就会造成内存泄露,再次更新ui明显是一个异常状态。本例中我们就需要使用LifeCycle解决此类异常状态。

用到的方法

lifecycle.currentState.isAtLeast(Lifecycle.State.STARTED)

测试案例说明和实现

案例说明:

在注册观察者的onCreate方法监听中使用Thread.sleep模拟一个4s耗时任务,然后在Activity中监听任务的回调并打印日志。我们需要模拟两种操作

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值