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的优先级
- 前台Activity
- 可见但非前台Activity
- 后台Activity
系统会按照这个优先级杀死Activity
什么时候会调用onSaveInstanceState ?
系统会调用onSaveInstanceState来保存当前Activity的状态。(在onStop之前,在onPause前后)
我们可以通过onRestoreInstanceState(在onStart之后)或onCreate方法判断Activity是否被重建了。
- 系统认为这个Activity有可能被回收时的情况
* 启动新的Activity
* 按Home键
* 锁屏
* 当Activity异常终止
* 手机内存不足导致Activity被回收
* 旋转屏幕
按Back键结束程序不会调用onSaveInstanceState,Activity会执行onDestory,主动销毁。
其他
参考 《Android艺术开发探索》
还没有评论,来说两句吧...