再谈Activity生命周期(详细)

@(Android基础)[Android全程实录读书笔记]

Activity的3中状态:

  1. 激活: 完全显示在界面上, 并且有焦点, 即正在与用户交互
  2. 暂停: 不完全显示, 没有焦点. 即被半透明或者其他Activity遮挡.
  3. 停止: 完全不现实, 没有焦点. 即完全被其他activity遮挡, 被压入activity的栈中

Activity的7个生命周期方法:

  1. onCreate()
  2. onStart()
  3. onResume()
  4. onRestart()
  5. onPause()
  6. onStop()
  7. onDestroy()

其中:
onCreate() 和 onDestroy() 对应
onStart() 和 onStop() 对应
onResume() 和 onPause() 对应
onReStart(): 在 停止状态到激活状态时会被调用. 如果是暂停状态到激活状态则不会调用
onSaveInstanceState(): 用来保存临时状态, 会在非主动, 从激活到暂停状态会调用, 也就是说点击back键主动退出是不会调用的, 但是点击home键到停止状态非主动会调用.

来看几个典型的例子:

  1. 程序启动:
    onCreate() -> onStart() -> onResume()
  2. 程序结束: 点击back键退出
    onPause() -> onStop() -> onDestroy()
  3. 程序启动后,点击home键回到桌面:
    onPause() -> onSaveInstanceState() -> onStop()
    这个时候再进入:
    onRestart() -> onStart() -> onResume()
  4. 程序启动, 弹出一个对话框, 进度条是不会调用生命周期的
  5. 程序启动, 跳转到第二个activity(全屏), 再跳转回来. 生命周期效果和点击home键到桌面是一样的.
    如果第二个Activity的Theme被设置为对话框, 那么就会出现 暂停状态, 生命周期为:
    onPause() -> onSaveInstanceState()
    恢复
    onResume()

生命周期图:

还有几个注意点:

  1. onSaveInstanceState()是保存临时状态, 不会总被调用, 所以不能用它来保存持久性数据. onPause() , onStop(), onDestroy() 状态的activity都可能随时被系统回收, 所以最好在 onPause() 方法中保存在与用户交互前更改的数据.
  2. 关于 onSaveInstanceState() 和 onRestoreInstanceState(), 这两个方法不一定是成对调用的. onSaveInstanceState() 会在activity容易在进入容易被系统回收的情况下调用. onRestoreInstanceState() 会在当activity已经被销毁(这里的销毁是activity在被系统自动回收的情况, 而非主动退出.) ,再次击进入应用的时候. 例如在程序启动后, 点击home键, 这时activity会进入onStop(), 这个时候使用手机的内存清理, 系统会回收掉目前未显示的所有Activity, 这时再重新启动应用, 就会调用: onRestoreInstanceState().
    生命周期为: onCreate() -> onStart() -> onRestoreInstanceState() -> onRsume(). 所以其实我们还可以将: onRestoreInstanceState() 写到 onCreate() 中效果也一样. 都是从 savedInstanceState这个bundle中获取数据.

附上代码

http://download.csdn.net/detail/u013647382/9575872

详谈Activity生命周期函数调用时机相关推荐

  1. Android 组件系列-----Activity生命周期

    本篇随笔将会深入学习Activity,包括如何定义多个Activity,并设置为默认的Activity.如何从一个Activity跳转到另一个Activity,还有就是详细分析Activity的生命周 ...

  2. Activity生命周期和调用时机

    onCreate 表示Activity正在被创建,这是Activity 生命周期执行的第一个方法.可以做一些初始化的工作. 比如:加载布局文件.绑定控件.初始化数据等. 调用时机:Activity创建 ...

  3. Android Ams对于Activity生命周期的管理

    分析Activity的生命周期管理,我觉得应该先看下面两篇关于Activity的官方文档: 了解 Activity 生命周期 处理 Activity 状态更改 里面有下面一段话,比较简洁的说出了Act ...

  4. framework之Activity 生命周期解析(基于Android11源码)

    引言 上一篇讲了Activity的创建过程(没看过的小伙伴移步 点我前往).由于篇幅的问题,只分析到OnCreate周期,那这一篇就接着讲余下部分的周期. 在高版本上,activity的周期都是以事务 ...

  5. android代理生命周期,了解 Activity 生命周期

    当用户浏览.退出和返回到您的应用时,您应用中的 在生命周期回调方法中,您可以声明用户离开和再次进入 Activity 时 Activity 的行为方式.例如,如果您正构建流媒体视频播放器,当用户切换至 ...

  6. Android Activity生命周期管理

    http://blog.csdn.net/thl789/article/details/6628463 本文描述Android中Activity的状态,Activity的状态转换,从而总结了Activ ...

  7. 喜闻乐见之Activity生命周期

    Activity的生命周期,对于Android开发者来说,再熟悉不过了.但是我们接触到的资料,绝大部分都只是谈了一些表面上的东西,例如各个回调的顺序等等.本文试图换个角度来讲解,也希望对各位读者有所帮 ...

  8. Activity生命周期和启动模式

    Activity生命周期和启动模式 1. 典型情况下的生命周期分析 完整生存期:onCreate()-onDestory(),分别标识着Activity的创建和销毁,并且只可能有一次调用. 可见生存期 ...

  9. 从源码看 Activity 生命周期(上篇)

    本文是我的 AOSP 系列 第六篇文章,往期目录如下: Java 世界的盘古和女娲 -- Zygote Zygote家的大儿子 -- SystemServer Android 世界中,谁喊醒了 Zyg ...

最新文章

  1. vue中点击第一次没有触发按钮怎么操作_vue如何触发某个元素的单击事件?
  2. 重磅直播|结构光双目立体匹配三维重建方法
  3. SpringMVC,MyBatis项目中兼容Oracle和MySql的解决方案及其项目环境搭建配置、web项目中的单元测试写法、HttpClient调用post请求等案例
  4. IntellijIDEA插件编写-删除/插入/替换文档内容
  5. java过滤器命名_JAVA过滤器的使用(Filter)
  6. kafka 集群_Kafka集群搭建
  7. 【计数网络】梯度累加增加LCFCN的BatchSize
  8. 计算机玩游戏黑屏的原因,为什么电脑玩一会游戏就黑屏,这是为什么??????...
  9. TP4056 充电电路学习借鉴
  10. 董事长和总经理的最大区别
  11. 华为eNSP防火墙NAT配置
  12. 佳博80250打印机怎么看打印机IP
  13. android手机存储空间划分及压图路径选取
  14. 如何在Google表格中添加当前日期和时间
  15. 计算机图形学三:光栅化-Rasterization
  16. win10控制3D对象、视频等七个文件夹的显示与否
  17. 大数据分析培训课程有哪些?初级阶段学什么?
  18. Redis 未授权访问漏洞与getshell(附getshell检测工具)
  19. [附源码]java毕业设计校园跑腿系统
  20. 添加网站(虚拟主机)

热门文章

  1. 10电脑睡眠后自动关机怎么回事 win_win10电脑睡眠变关机怎么解决_win10睡眠变自动关机的处理方法-系统城...
  2. linux服务器防攻击脚本,防止服务器被攻击的妙招(推荐)
  3. C语言希冀平台作业-南京晓庄
  4. 月入万元快递哥遭遇AI小鸟怎么办
  5. flutter安装及过程中遇到的问题解决
  6. 儒略日(CSP S2 第一题)
  7. onedrive已停止工作_4、工作簿的基本操作
  8. poi 获取解析 excel 获取表头信息以及内容
  9. 小米盒子 刷系统 参考方法
  10. xp系统查找局域网计算机名,WinXP系统内网IP查询的方法