详谈Activity生命周期函数调用时机
再谈Activity生命周期(详细)
@(Android基础)[Android全程实录读书笔记]
Activity的3中状态:
- 激活: 完全显示在界面上, 并且有焦点, 即正在与用户交互
- 暂停: 不完全显示, 没有焦点. 即被半透明或者其他Activity遮挡.
- 停止: 完全不现实, 没有焦点. 即完全被其他activity遮挡, 被压入activity的栈中
Activity的7个生命周期方法:
- onCreate()
- onStart()
- onResume()
- onRestart()
- onPause()
- onStop()
- onDestroy()
其中:
onCreate() 和 onDestroy() 对应
onStart() 和 onStop() 对应
onResume() 和 onPause() 对应
onReStart(): 在 停止状态到激活状态时会被调用. 如果是暂停状态到激活状态则不会调用
onSaveInstanceState(): 用来保存临时状态, 会在非主动, 从激活到暂停状态会调用, 也就是说点击back键主动退出是不会调用的, 但是点击home键到停止状态非主动会调用.
来看几个典型的例子:
- 程序启动:
onCreate() -> onStart() -> onResume() - 程序结束: 点击back键退出
onPause() -> onStop() -> onDestroy() - 程序启动后,点击home键回到桌面:
onPause() -> onSaveInstanceState() -> onStop()
这个时候再进入:
onRestart() -> onStart() -> onResume() - 程序启动, 弹出一个对话框, 进度条是不会调用生命周期的
- 程序启动, 跳转到第二个activity(全屏), 再跳转回来. 生命周期效果和点击home键到桌面是一样的.
如果第二个Activity的Theme被设置为对话框, 那么就会出现 暂停状态, 生命周期为:
onPause() -> onSaveInstanceState()
恢复
onResume()
生命周期图:
还有几个注意点:
- onSaveInstanceState()是保存临时状态, 不会总被调用, 所以不能用它来保存持久性数据. onPause() , onStop(), onDestroy() 状态的activity都可能随时被系统回收, 所以最好在 onPause() 方法中保存在与用户交互前更改的数据.
- 关于 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生命周期函数调用时机相关推荐
- Android 组件系列-----Activity生命周期
本篇随笔将会深入学习Activity,包括如何定义多个Activity,并设置为默认的Activity.如何从一个Activity跳转到另一个Activity,还有就是详细分析Activity的生命周 ...
- Activity生命周期和调用时机
onCreate 表示Activity正在被创建,这是Activity 生命周期执行的第一个方法.可以做一些初始化的工作. 比如:加载布局文件.绑定控件.初始化数据等. 调用时机:Activity创建 ...
- Android Ams对于Activity生命周期的管理
分析Activity的生命周期管理,我觉得应该先看下面两篇关于Activity的官方文档: 了解 Activity 生命周期 处理 Activity 状态更改 里面有下面一段话,比较简洁的说出了Act ...
- framework之Activity 生命周期解析(基于Android11源码)
引言 上一篇讲了Activity的创建过程(没看过的小伙伴移步 点我前往).由于篇幅的问题,只分析到OnCreate周期,那这一篇就接着讲余下部分的周期. 在高版本上,activity的周期都是以事务 ...
- android代理生命周期,了解 Activity 生命周期
当用户浏览.退出和返回到您的应用时,您应用中的 在生命周期回调方法中,您可以声明用户离开和再次进入 Activity 时 Activity 的行为方式.例如,如果您正构建流媒体视频播放器,当用户切换至 ...
- Android Activity生命周期管理
http://blog.csdn.net/thl789/article/details/6628463 本文描述Android中Activity的状态,Activity的状态转换,从而总结了Activ ...
- 喜闻乐见之Activity生命周期
Activity的生命周期,对于Android开发者来说,再熟悉不过了.但是我们接触到的资料,绝大部分都只是谈了一些表面上的东西,例如各个回调的顺序等等.本文试图换个角度来讲解,也希望对各位读者有所帮 ...
- Activity生命周期和启动模式
Activity生命周期和启动模式 1. 典型情况下的生命周期分析 完整生存期:onCreate()-onDestory(),分别标识着Activity的创建和销毁,并且只可能有一次调用. 可见生存期 ...
- 从源码看 Activity 生命周期(上篇)
本文是我的 AOSP 系列 第六篇文章,往期目录如下: Java 世界的盘古和女娲 -- Zygote Zygote家的大儿子 -- SystemServer Android 世界中,谁喊醒了 Zyg ...
最新文章
- vue中点击第一次没有触发按钮怎么操作_vue如何触发某个元素的单击事件?
- 重磅直播|结构光双目立体匹配三维重建方法
- SpringMVC,MyBatis项目中兼容Oracle和MySql的解决方案及其项目环境搭建配置、web项目中的单元测试写法、HttpClient调用post请求等案例
- IntellijIDEA插件编写-删除/插入/替换文档内容
- java过滤器命名_JAVA过滤器的使用(Filter)
- kafka 集群_Kafka集群搭建
- 【计数网络】梯度累加增加LCFCN的BatchSize
- 计算机玩游戏黑屏的原因,为什么电脑玩一会游戏就黑屏,这是为什么??????...
- TP4056 充电电路学习借鉴
- 董事长和总经理的最大区别
- 华为eNSP防火墙NAT配置
- 佳博80250打印机怎么看打印机IP
- android手机存储空间划分及压图路径选取
- 如何在Google表格中添加当前日期和时间
- 计算机图形学三:光栅化-Rasterization
- win10控制3D对象、视频等七个文件夹的显示与否
- 大数据分析培训课程有哪些?初级阶段学什么?
- Redis 未授权访问漏洞与getshell(附getshell检测工具)
- [附源码]java毕业设计校园跑腿系统
- 添加网站(虚拟主机)
热门文章
- 10电脑睡眠后自动关机怎么回事 win_win10电脑睡眠变关机怎么解决_win10睡眠变自动关机的处理方法-系统城...
- linux服务器防攻击脚本,防止服务器被攻击的妙招(推荐)
- C语言希冀平台作业-南京晓庄
- 月入万元快递哥遭遇AI小鸟怎么办
- flutter安装及过程中遇到的问题解决
- 儒略日(CSP S2 第一题)
- onedrive已停止工作_4、工作簿的基本操作
- poi 获取解析 excel 获取表头信息以及内容
- 小米盒子 刷系统 参考方法
- xp系统查找局域网计算机名,WinXP系统内网IP查询的方法