Activity的生命周期详解

在这里插入图片描述
oncreate() 表示activity正在被创建,这是生命周期的第一个方法,在这个方法里,我们可以做一些初始化工作,比如加载布局资源,初始化activity所需数据。
onStart() 表示activity正在被启动,此时activity已经可见了,但是还没有出现在前台,还无法和用户交互。
onResume() 表示activity已经可见了,并且处于在前台。
onPause() 表示activity正在停止,此时可以做一些存储数据、停止动画等工作,但注意不能太耗时。因为这会影响新activity的显示,onPause必须先执行完,新activity的onResume才能执行。
onStop() 表示activity即将停止,此时可以做一些重量级的回收工作,但同样不能太耗时。
onDestory() 表示activity即将被销毁,这是activity生命周期的最后一个回调,在这里,我们可以做一些回收工作和最终的资源释放。
onRestart() 表示activity正在重新启动。

典型情况下的生命周期分析

MainActivity和SecondActivity之间相互跳转,其生命周期过程的打印
(1) 启动MainActivity

myapplication D/MainActivity: onCreate: 
myapplication D/MainActivity: onStart: 
myapplication D/MainActivity: onResume:

(2) MainActivity启动SecondActivity

myapplication D/MainActivity: onPause: 
myapplication D/SecondActivity: onCreate: 
myapplication D/SecondActivity: onStart: 
myapplication D/SecondActivity: onResume: 
myapplication D/MainActivity: onStop: 

(3)SecondActivity Back键返回

myapplication D/SecondActivity: onPause: 
myapplication D/MainActivity: onRestart: 
myapplication D/MainActivity: onStart: 
myapplication D/MainActivity: onResume: 
myapplication D/SecondActivity: onStop: 
myapplication D/SecondActivity: onDestroy: 

(4)MainActivity Back键返回

myapplication D/MainActivity: onPause: 
myapplication D/MainActivity: onStop: 
myapplication D/MainActivity: onDestroy: 

异常情况下的生命周期分析

activity除了受用户操作所导致的正常的生命周期调度,还有一些异常情况,比如当资源相关的系统配置发生改变或者内存不足时,activity就可能会被杀死。我们不好模拟内存不足的情况,可以尝试修改系统配置来模拟异常情况。
当系统配置发生改变之后,activity就会被销毁并重新创建。其中onPause,onStop,onDestory都会被调用,同时由于activity是在异常情况下被销毁的,那么系统会调用onSaveInstanceState来保存当前activity的状态。需要强调的是,onSaveInstanceState方法只会出现在activity被异常终止的情况下,正常情况下系统不会回调这方法。当activity被重新创建后,系统会调用onRestoreInstanceState,并把activity销毁时onSaveInstanceState方法所保存的Bundle对象作为参数同时传递给onRestoreInstanceState和onCreate方法,因此我们可以通过onRestoreInstanceState和onCreate方法来判断activity是否被重建了,如果被重建了,那么我们就可以取出之前保存的数据并恢复,从时序上来说,onRestoreInstanceState的调用时机在onStart之后。
现在我们来模拟一下系统配置发生改变之后的MainActivity的生命周期过程
MainActivity启动之后,切换横竖屏

myapplication D/MainActivity: onPause: 
myapplication D/MainActivity: onStop: 
myapplication D/MainActivity: onSaveInstanceState: 
myapplication D/MainActivity: onDestroy: 
myapplication D/MainActivity: onCreate: 
myapplication D/MainActivity: onStart: 
myapplication D/MainActivity: onRestoreInstanceState: 
myapplication D/MainActivity: onResume: 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值