Activity生命周期

回顾一下Activity的生命周期执行流程,先上个基本流程图

上图展现的是一个Activity正常的生命周期和异常情况下的生命周期(比如Configuration变化,系统回收导致的activity销毁等)。

除此之外,需要注意两个Activity切换过程中,两个Activity生命周期的执行顺序。

如上图所示,创建两个Activity,分别是ActivityFirst、ActivityLifeCycle.  那么ActivityLifeCycle跳转到ActivityFirst,两个Activity的生命周期执行顺序是什么样的呢?

可以看到,在执行startActivity操作之后,首先会执行ActivityLifeCycle的onPause(),然后才开始ActivityFirst的生命周期,ActivityFirst创建成功后,才执行ActivityLifeCycle的onStop方法。由此可知,不能在onPause()执行耗时操作的另一原因是,会影响目标Activity的启动。

接下来我们在看下,从ActivityFirst返回到ActivityLifeCycle,两个Activity的生命周期执行顺序是怎么样的。

其实与前面类似,会先调用当前Activity的onPause(), 然后会回调目标Activity的onRestart()、onStart()、onResume()方法,最后回调本Activity的onStop(), onDestory()方法。同样的不要在onPause()中执行耗时操作,另外很多同学喜欢在onDestory做些资源方式、解注册等操作,但是由于当前Activity的onDestory()是在目标activity的onResume()方法回调之后才会执行,在某些场景下, 在当前Activity的onDestory()中执行解注册,在目标Activity的onResume()执行注册,这个时候,由于onResume()先执行,就会导致注册失败,所以建议在onPause()中判断是否处于isFinishing状态,是的话则进行资源释放操作,前提是不耗时。

从整个生命周期来说,onCreate和onDestory是配对的,分别标志着Activity的创建和销毁,并且只可能有一次调用。从Activity的是否可见来说,onStart和onStop是配对的,随着用户的操作或者设备屏幕的点亮和熄灭,这两个方法可能被调用多次;从Activity是否处于前台来说,onResume和onPause是配对的,同样的这两个方法可能会被调用多次。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

释汐宇辰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值