Activity的生命周期

缺乏、安全感 2023-10-17 09:53 107阅读 0赞

Activity的生命周期

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

典型声明周期

  • 按Home键后由又回调该Activity
  1. * Home键后onpause->onstop,回到该Activity onRestart->onstart->onResume
  • 锁屏后把屏幕打开
  1. * 魅族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有可能被回收时的情况
  1. * 启动新的Activity
  2. * Home
  3. * 锁屏
  4. * Activity异常终止
  5. * 手机内存不足导致Activity被回收
  6. * 旋转屏幕

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

其他

参考 《Android艺术开发探索》

发表评论

表情:
评论列表 (有 0 条评论,107人围观)

还没有评论,来说两句吧...

相关阅读

    相关 activity生命周期

    通过实现回调方法来管理你的activity的生命周期,对于开发一个健壮而又灵活的应用程序而言是至关重要的。 与其它activity的关联性、自身的任务和back stack直接

    相关 activity生命周期

    activity的生命周期分为典型情况和异常情况。 一.典型情况下生命周期的分析: 1)onCreate:表示activity正在创建,是第一个方法;一般在这个方法中我