android LifeCycle-简单使用和详细原理解析,女生学移动应用开发就业方向

本文深入探讨了Android LifeCycle在处理异常状态中的应用,通过实例展示了如何利用lifecycle.currentState.isAtLeast()防止内存泄露。同时,文章详细解析了LifeCycle的基本原理,包括ComponentActivity注册Fragment、addObserver方法、Fragment生命周期回调以及注解方法的执行流程,帮助开发者更好地理解和使用LifeCycle。
摘要由CSDN通过智能技术生成

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中监听任务的回调并打印日志。我们需要模拟两种操作:

    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

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

    抵扣说明:

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

    余额充值