再谈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. 通俗易懂word2vec详解词嵌入-深度学习
  2. asn1学习笔记 约束
  3. 塔勒布: 2019-nCoV的系统风险:一份笔记
  4. 后盾网lavarel视频项目---vue-axios基本用法
  5. DIV的id和class
  6. Xtreme SuitePro ActiveX 2008 v12.0.1 更新了
  7. javaBean和Servlet的区别
  8. 《兔兔公司的历史》那些年,百度的荣耀和沉沦
  9. 菜鸟进阶必修课-主板插线小百科(图)
  10. mysql root 注入_sql注入入门之mysqlroot权限下的注入利用方式
  11. 【Docker 入门】Docker简介与安装
  12. 捐赠3亿元驰援疫情后,腾讯再出2亿元发起“战疫开发者公益联盟”
  13. HelpDesk工作流多级,多任务流程(包含源代码和InfoPath模板)
  14. 安卓apk的编译与反编译
  15. 独家 | 全球 AI 量化金融机构全景图(附完整分析)
  16. Java VM Options
  17. O'Stolz 定理及其应用
  18. 在.cpp文件中调用.c文件中的函数
  19. 南京邮电大学MOOC高级程序语言设计(C++)第五章编程题答案
  20. 机器学习理论 之 经验风险最小化(Empirical Risk Minimization)

热门文章

  1. Jboot 跨域请求
  2. Android秋招秘籍,看我如何搞定BAT,Vivo,爱奇艺
  3. ZBrush - 动物毛发制作及渲染
  4. 网购热催生网络模特月入万元多为大学生
  5. 2023 最新 抖音AI换脸表情包小程序变现玩法项目
  6. 〖Python 数据库开发实战 - Python与Redis交互篇⑮〗- 综合案例 - 新闻管理系统 - 更新所编辑新闻状态(根据输入内容进行保存操作)
  7. 【Unifying Motion Deblurring and Frame Interpolation with Events】阅读笔记
  8. 如何在idea中高效地使用和查找TODO标签
  9. 万云网实名认证不成功_头条发文章显示实名认证接口调用失败,无法发送,怎么办才能解决?我实名了的?...
  10. java工厂方法_Java设计模式之工厂方法模式