详谈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 ...
最新文章
- 通俗易懂word2vec详解词嵌入-深度学习
- asn1学习笔记 约束
- 塔勒布: 2019-nCoV的系统风险:一份笔记
- 后盾网lavarel视频项目---vue-axios基本用法
- DIV的id和class
- Xtreme SuitePro ActiveX 2008 v12.0.1 更新了
- javaBean和Servlet的区别
- 《兔兔公司的历史》那些年,百度的荣耀和沉沦
- 菜鸟进阶必修课-主板插线小百科(图)
- mysql root 注入_sql注入入门之mysqlroot权限下的注入利用方式
- 【Docker 入门】Docker简介与安装
- 捐赠3亿元驰援疫情后,腾讯再出2亿元发起“战疫开发者公益联盟”
- HelpDesk工作流多级,多任务流程(包含源代码和InfoPath模板)
- 安卓apk的编译与反编译
- 独家 | 全球 AI 量化金融机构全景图(附完整分析)
- Java VM Options
- O'Stolz 定理及其应用
- 在.cpp文件中调用.c文件中的函数
- 南京邮电大学MOOC高级程序语言设计(C++)第五章编程题答案
- 机器学习理论 之 经验风险最小化(Empirical Risk Minimization)
热门文章
- Jboot 跨域请求
- Android秋招秘籍,看我如何搞定BAT,Vivo,爱奇艺
- ZBrush - 动物毛发制作及渲染
- 网购热催生网络模特月入万元多为大学生
- 2023 最新 抖音AI换脸表情包小程序变现玩法项目
- 〖Python 数据库开发实战 - Python与Redis交互篇⑮〗- 综合案例 - 新闻管理系统 - 更新所编辑新闻状态(根据输入内容进行保存操作)
- 【Unifying Motion Deblurring and Frame Interpolation with Events】阅读笔记
- 如何在idea中高效地使用和查找TODO标签
- 万云网实名认证不成功_头条发文章显示实名认证接口调用失败,无法发送,怎么办才能解决?我实名了的?...
- java工厂方法_Java设计模式之工厂方法模式