Activity的生命周期

Activity的生命周期

onCreate Activity开始创建,可做一些初始化工作
onRestart Activity正在重启,(当Activity从不可见到可见时触发)
onStart Activity正在启动,可见,还在后台 (用户还看不到)
onResume Activity可见,已在前台
onPause Activity正在停止
正常情况,之后onStop会被调用
特殊情况,onResume会被调用 [极端情况->快速回到当前Activity]
可做轻量级存储、停止动画操作
注意: onPause执行完,新Activity的onResume才会被调用
onStop Activity即将停止,可做稍微重量级的回收工作
onDestory Activity即将被销毁,可做回收工作和最终资源的释放

典型声明周期

  • 按Home键后由又回调该Activity
    • 按Home键后onpause->onstop,回到该Activity onRestart->onstart->onResume
  • 锁屏后把屏幕打开
    • 魅族Mx6:锁屏后onpause->onstop,解锁后onRestart->onstart->onResume

启动透明主题Activity的Activity不会回调onStop

onStart和onResume、onPause和onStop从描述上来看差不多,对我们来说有什么实质的不同?

在实际使用过程中的确差不多,甚至可只保留其中一对。
onStart和Stop是从Activity是否可见这个角度来回调的
onResume和OnPause是从Activity是否位于前台这个角度来回调的

新启动Activity的OnResume会在之前Activity OnStop之后才执行

异常情况下的声明周期分析

资源相关的系统配置发生改变导致Activity被杀死并重新创建

旋转屏幕
onPause->onSaveInstanceState(可能在onPause之前)->onStop->onDestory->onCreate->onRestoreInstanceState

资源内存不足导致低优先级的Activity被杀死
Activity的优先级
  1. 前台Activity
  2. 可见但非前台Activity
  3. 后台Activity

系统会按照这个优先级杀死Activity

什么时候会调用onSaveInstanceState ?

系统会调用onSaveInstanceState来保存当前Activity的状态。(在onStop之前,在onPause前后)
我们可以通过onRestoreInstanceState(在onStart之后)或onCreate方法判断Activity是否被重建了。

  • 系统认为这个Activity有可能被回收时的情况
    • 启动新的Activity
    • 按Home键
    • 锁屏
    • 当Activity异常终止
      • 手机内存不足导致Activity被回收
      • 旋转屏幕

按Back键结束程序不会调用onSaveInstanceState,Activity会执行onDestory,主动销毁。

其他

参考 《Android艺术开发探索》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

氦客

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

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

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

打赏作者

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

抵扣说明:

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

余额充值