Activity生命周期


Android有7个核心生命周期。首先我们看下它们的含义。

1.生命周期中各个方法的含义和作用

(1)onCreate:create

表示创建,这是Activity生命周期的第一个方法,也是我们在android开发中接触的最多的生命周期方法。它本身的作用是进行Activity的一些初始化工作,比如使用setContentView加载布局,对一些控件和变量进行初始化等。但也有很多人将很多与初始化无关的代码放在这,其实这是不规范的。此时Activity还在后台,不可见。所以动画不应该在这里初始化,因为看不到……

(2)onStart:start

表示启动,这是Activity生命周期的第二个方法。此时Activity已经可见了,但是还没出现在前台,我们还看不到,无法与Activity交互。其实将Activity的初始化工作放在这也没有什么问题,放在onCreate中是由于官方推荐的以及我们开发的习惯。

(3)onResume:resume

表示继续、重新开始,这名字和它的职责也相同。此时Activity经过前两个阶段的初始化已经蓄势待发。Activity在这个阶段已经出现在前台并且可见了。这个阶段可以打开独占设备

(4)onPause:pause

表示暂停,当Activity要跳到另一个Activity或应用正常退出时都会执行这个方法。此时Activity在前台并可见,我们可以进行一些轻量级的存储数据和去初始化的工作,不能太耗时,因为在跳转Activity时只有当一个Activity执行完了onPause方法后另一个Activity才会启动,而且android中指定如果onPause在500ms即0.5秒内没有执行完毕的话就会强制关闭Activity。从生命周期图中发现可以在这快速重启,但这种情况其实很罕见,比如用户切到下一个Activity的途中按back键快速得切回来。

(5)onStop:stop

表示停止,此时Activity已经不可见了,但是Activity对象还在内存中,没有被销毁。这个阶段的主要工作也是做一些资源的回收工作。

(6)onDestroy:destroy

表示毁灭,这个阶段Activity被销毁,不可见,我们可以将还没释放的资源释放,以及进行一些回收工作。

(7)onRestart:restart

表示重新开始,Activity在这时可见,当用户按Home键切换到桌面后又切回来或者从后一个Activity切回前一个Activity就会触发这个方法。这里一般不做什么操作。


当程序开始运行时,会执行 onCreate(),onStrat(),onResume().这三个方法。

onCreate()

您必须实现此回调,其在系统首次创建 Activity 时触发。Activity 会在创建后进入已创建状态。在 onCreate() 方法中,您需执行基本应用启动逻辑,该逻辑在 Activity 的整个生命周期中只应发生一次。

onStart()

当 Activity 进入“已开始”状态时,系统会调用此回调。onStart() 调用使 Activity 对用户可见,因为应用会为 Activity 进入前台并支持交互做准备。例如,应用通过此方法来初始化维护界面的代码。

onStart() 方法会非常快速地完成,并且与“已创建”状态一样,Activity 不会一直处于“已开始”状态。一旦此回调结束,Activity 便会进入已恢复状态,系统将调用 onResume() 方法。

onResume()
该方法执行完后,才可以进行交互。***


当我们点击返回键后,会执行

这种情况比较简单,基本上是单个Activity从开始到结束的生命周期。

onPause()

系统将此方法视为用户正在离开您的 Activity 的第一个标志(尽管这并不总是意味着活动正在遭到销毁);此方法表示 Activity 不再位于前台(尽管如果用户处于多窗口模式,Activity 仍然可见)。使用 onPause() 方法暂停或调整当 Activity 处于“已暂停”状态时不应继续(或应有节制地继续)的操作,以及您希望很快恢复的操作。



下面这种情况很常见,跳转到一个 Activity 或 Home 键回到桌面。




下面这 种 情 况 一 般 发 生 在 跳 转 到 一 个 DialogActivity , Activity 并 没 有 被 DiallogActivity 完全盖住,比较少见。




这种情况多发生在屏幕旋转时,这时候我们可以利用 onSavedInstance() 保存一 些数据,在 onCreate()onRestoreInstanceState() 时拿到之前的一些数据。

当旋转屏幕后,会先执行onSavedlnstance()方法,之后销毁页面,重新开始运行这个页面,但是之前页面的数据会保存。


10.1Activity生命周期相关推荐

  1. 红帽企业Linux生命周期

    红帽企业Linux生命周期 总览 细节 生产阶段 全面支持阶段 维护支持一期 维护支持阶段(RHEL 8)阶段/ 维护支持2阶段(RHEL 5.6.7) 延长使用寿命 红帽企业Linux更长的支持附加 ...

  2. 实验10:创建带有生命周期方法的bean ||实验11:测试bean的后置处理器

    实验10:创建带有生命周期方法的bean 实验11:测试bean的后置处理器 MyBeanPostProcessor.java package com.atguigu.bean;import org. ...

  3. Android复习10【Service与Thread的区别、Service的生命周期、Service生命周期解析(相关方法详解、启动方式的不同、绑定)、音乐播放器+服务】

    音乐播放器Android代码下载:https://wws.lanzous.com/ifqzihaxvij 目   录 Service与Thread的区别 Service的生命周期 Service生命周 ...

  4. 第10课:Spark Streaming源码解读之流数据不断接收全生命周期彻底研究和思考

    特别说明:  在上一遍文章中有详细的叙述Receiver启动的过程,如果不清楚的朋友,请您查看上一篇博客,这里我们就基于上篇的结论,继续往下说. 博文的目标是:  Spark Streaming在接收 ...

  5. Ubuntu 19.10 将于本月结束生命周期

    Ubuntu 19.10 "Eoan Ermine" 的官方支持将于 2020 年 7 月 17 日终止.若有需要,可迁移至 Ubuntu 20.04 "Focal Fo ...

  6. 历经十年,Windows 7 生命周期将结束,微软:快换 Windows 10

    距离 Microsoft 终止对 Windows 7 的支持只剩半年,到 2020 年 1 月 14 日,这款经典的操作系统就要和大家 say goodbye 了. 2009 年 7 月 4 日,Wi ...

  7. Elastic:Data tiers 介绍及索引生命周期管理 - 7.10 之后版本

    Data tier 也就是数据层.是一个在 7.10 版本的一个新概念.数据层是具有相同数据角色的节点的集合,这些节点通常共享相同的硬件配置文件: Content tier (内容层)节点处理诸如产品 ...

  8. 【Unity3D 教程系列第 10 篇】Unity 脚本中的生命周期流程图

    这是[Unity3D 教程系列第 10 篇],如果觉得有用的话,欢迎关注专栏. 文章目录 一:生命周期流程图 二:常用的生命周期函数 三:脚本初始化和销毁 四:脚本的动态添加与静态添加 五:Awake ...

  9. 连载《一个程序猿的生命周期》-《发展篇》- 23.两年多的时间,从孤家寡人到10多人的团体,经历了什么...

              上篇文章<城市奋斗者的阿Q精神>,不管真正的奋斗者还是伪奋斗者都需要阿Q精神,有的人是遇事之后被动的心里安慰,有的人是看破尘事的无所畏惧到内心强大.我可能属于后者,从写 ...

最新文章

  1. 阿里云发布三大人工智能产品:推动AI产业落地
  2. CVTE(WEB后台开发)
  3. oryx-editor 客户端的加载过程
  4. 《日志管理与分析权威指南》一2.3 良好日志记录的标准
  5. 人工操作阶段计算机是如何工作的,管理信息系统作业参考答案
  6. 你还记得windows workflow foundation吗
  7. Adobe Experience Design是什么软件?xd mac版下载安装教程 XD 2021发布
  8. Mysql的日期查询方法
  9. 并发重复请求及幂等场景的实现总结
  10. HikariCP配置手册
  11. DNS分类与区别-权威DNS、递归DNS、转发DNS
  12. 程序员30+后的困惑焦虑,出路在哪里?
  13. 计算机专业英语读书笔记,英语的读书笔记(精选10篇)
  14. mac 10.13 安装 java7_下载安装或升级 macOS High Sierra 10.13 系统教程
  15. 【html】理工男李峋的极致浪漫:爱心代码|和你的心跳同频共振
  16. Lighthouse performance scoring
  17. 如何理解什么是PHP接口,如何应用PHP接口?
  18. storm mysql trident_Storm Trident状态
  19. 计算机网络ospf实验报告,中山大学《计算机网络实验报告》10-OSPF实验.pdf
  20. 有趣的新闻(1):你见过贝加尔湖冰冻气泡吗?

热门文章

  1. iptable_netfilter介绍以及简单代码分析
  2. 酷客多小程序百城宣讲会-岳阳站圆满结束
  3. 小猿圈分享-web报表中电子印章/水印的轻松实现
  4. python定位地理位置_我可以使用HTML5定位工具在Python中获得精确的地理位置吗?...
  5. SqlSugar 首次使用以及遇到的问题
  6. 怎样通过几何画板中文版输入固定度数的角
  7. c语言a++与++a的区别
  8. MapInfo Professional 10.0简介以及下载
  9. 近期关于Transformer结构有潜力的改进方法总结
  10. 日志打印-sprintf函数封装