10.1Activity生命周期
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生命周期相关推荐
- 红帽企业Linux生命周期
红帽企业Linux生命周期 总览 细节 生产阶段 全面支持阶段 维护支持一期 维护支持阶段(RHEL 8)阶段/ 维护支持2阶段(RHEL 5.6.7) 延长使用寿命 红帽企业Linux更长的支持附加 ...
- 实验10:创建带有生命周期方法的bean ||实验11:测试bean的后置处理器
实验10:创建带有生命周期方法的bean 实验11:测试bean的后置处理器 MyBeanPostProcessor.java package com.atguigu.bean;import org. ...
- Android复习10【Service与Thread的区别、Service的生命周期、Service生命周期解析(相关方法详解、启动方式的不同、绑定)、音乐播放器+服务】
音乐播放器Android代码下载:https://wws.lanzous.com/ifqzihaxvij 目 录 Service与Thread的区别 Service的生命周期 Service生命周 ...
- 第10课:Spark Streaming源码解读之流数据不断接收全生命周期彻底研究和思考
特别说明: 在上一遍文章中有详细的叙述Receiver启动的过程,如果不清楚的朋友,请您查看上一篇博客,这里我们就基于上篇的结论,继续往下说. 博文的目标是: Spark Streaming在接收 ...
- Ubuntu 19.10 将于本月结束生命周期
Ubuntu 19.10 "Eoan Ermine" 的官方支持将于 2020 年 7 月 17 日终止.若有需要,可迁移至 Ubuntu 20.04 "Focal Fo ...
- 历经十年,Windows 7 生命周期将结束,微软:快换 Windows 10
距离 Microsoft 终止对 Windows 7 的支持只剩半年,到 2020 年 1 月 14 日,这款经典的操作系统就要和大家 say goodbye 了. 2009 年 7 月 4 日,Wi ...
- Elastic:Data tiers 介绍及索引生命周期管理 - 7.10 之后版本
Data tier 也就是数据层.是一个在 7.10 版本的一个新概念.数据层是具有相同数据角色的节点的集合,这些节点通常共享相同的硬件配置文件: Content tier (内容层)节点处理诸如产品 ...
- 【Unity3D 教程系列第 10 篇】Unity 脚本中的生命周期流程图
这是[Unity3D 教程系列第 10 篇],如果觉得有用的话,欢迎关注专栏. 文章目录 一:生命周期流程图 二:常用的生命周期函数 三:脚本初始化和销毁 四:脚本的动态添加与静态添加 五:Awake ...
- 连载《一个程序猿的生命周期》-《发展篇》- 23.两年多的时间,从孤家寡人到10多人的团体,经历了什么...
上篇文章<城市奋斗者的阿Q精神>,不管真正的奋斗者还是伪奋斗者都需要阿Q精神,有的人是遇事之后被动的心里安慰,有的人是看破尘事的无所畏惧到内心强大.我可能属于后者,从写 ...
最新文章
- 阿里云发布三大人工智能产品:推动AI产业落地
- CVTE(WEB后台开发)
- oryx-editor 客户端的加载过程
- 《日志管理与分析权威指南》一2.3 良好日志记录的标准
- 人工操作阶段计算机是如何工作的,管理信息系统作业参考答案
- 你还记得windows workflow foundation吗
- Adobe Experience Design是什么软件?xd mac版下载安装教程 XD 2021发布
- Mysql的日期查询方法
- 并发重复请求及幂等场景的实现总结
- HikariCP配置手册
- DNS分类与区别-权威DNS、递归DNS、转发DNS
- 程序员30+后的困惑焦虑,出路在哪里?
- 计算机专业英语读书笔记,英语的读书笔记(精选10篇)
- mac 10.13 安装 java7_下载安装或升级 macOS High Sierra 10.13 系统教程
- 【html】理工男李峋的极致浪漫:爱心代码|和你的心跳同频共振
- Lighthouse performance scoring
- 如何理解什么是PHP接口,如何应用PHP接口?
- storm mysql trident_Storm Trident状态
- 计算机网络ospf实验报告,中山大学《计算机网络实验报告》10-OSPF实验.pdf
- 有趣的新闻(1):你见过贝加尔湖冰冻气泡吗?
热门文章
- iptable_netfilter介绍以及简单代码分析
- 酷客多小程序百城宣讲会-岳阳站圆满结束
- 小猿圈分享-web报表中电子印章/水印的轻松实现
- python定位地理位置_我可以使用HTML5定位工具在Python中获得精确的地理位置吗?...
- SqlSugar 首次使用以及遇到的问题
- 怎样通过几何画板中文版输入固定度数的角
- c语言a++与++a的区别
- MapInfo Professional 10.0简介以及下载
- 近期关于Transformer结构有潜力的改进方法总结
- 日志打印-sprintf函数封装