activity生命周期如何理解Activity生命周期

activity生命周期  时间:2021-08-11  阅读:()

Activity的生命周期,你真的了解了吗

在Activity的生命周期中有很多的回调方法,系统调用Activity中的这些回调方法,就像是爬一个阶梯。

而这些回调方法就相当于阶梯的每一层。

当系统创建了一个新的Activity实例,回调方法一层一层的从最低层爬到最高层,也就是Resumed()。

到位于顶楼的时候,也就是这个Activity就位于用户的前台。

此时用户就可以和Activity进行互动了。

当用户要离开Activity的时候,系统调用右边的回调方法,一层一层的下这个阶梯,使Activity的状态从最高层移动到最底层。

在有些情况下,Activity只是完成部分的状态迁移并且等待用户的指令。

此时Activity只是站在Paused()上或者是ped()的阶梯上面,当得到用户重新运行的指令时,Activity会回到左边的阶梯上。

重新调用左边相应的爬阶梯回调方法, 一步一步向上爬并重新回到最高层的状态。

并显示在用户的前台。

根据Activity复杂度的不同,你或许不用实现所有的生命周期方法。

可是,理解每个生命周期回调函数的意义却非常重要,这能确保你的应用能完全按照用户的期望做出正确的动作。

正确的实现生命周期的回调方法,才能应用正确的动作。

所以作为一个合格的android程序员,理解Activity的生命周期,是非常有必要的

简述activity有哪几个生命周期,及android事件回调函数的作用和调用顺序

Android官方文档和其他不少资料都对Activity生命周期进行了详细介绍,在结合资料和项目开发过程中遇到的问题,本文将对Activity生命周期进行一次总结。

Activity是由Activity栈进管理,当来到一个新的Activity后,此Activity将被加入到Activity栈顶,之前的Activity位于此Activity底部。

Acitivity一般意义上有四种状态: 1.当Activity位于栈顶时,此时正好处于屏幕最前方,此时处于运行状态; 2.当Activity失去了焦点但仍然对用于可见(如栈顶的Activity是透明的或者栈顶Activity并不是铺满整个手机屏幕),此时处于暂停状态; 3.当Activity被其他Activity完全遮挡,此时此Activity对用户不可见,此时处于停止状态

如何理解Activity生命周期

Android官方文档里对Activity的生命周期有比较详尽的描述,但由于资源回收机制带来不确定性,我们的程序运行结果常常与预期的不符, 而调试这类问题又十分消耗时间和精力。

解决的根本办法还是要理解透Activity的生命周期及相关内容,这篇帖子着重介绍Activity生命周期本 身,之后会用一两篇帖子来介绍如何处理异常的状态变化。

下图是官方文档里的Activity生命周期图,其中彩色标出的四个框是Activity的四种状态,当Activity的状态改变时会触发一个或多个onXXX()方法。

onCreate() 当Acitivity第一次被创建时触发,一般在这里要做的事情包括创建视图(setContentView())、向视图填充必要的数据等等。

onRestart() 这个我比较少用到,按文档上的介绍,如果Activity之前被过,那么下一次onStart()方法之前会先触发这个方法。

onStart() 只要Activity从不可见变成可见,就会触发到这个方法,但被AlertDialog遮挡/显示的情况不算在内。

onResume() 当Activity来到最上层的时候,也就是开始与用户直接交互时,触发这个方法。

例如本来Activity被一个AlertDialog遮挡,当这个AlertDialog消失时,onResume()方法就被触发。

onPause() 和onResume()的触发条件刚好相反,如果Activity本来在最上层,当它要让出最上层的位置时会触发这个方法。

onPause()和onResume()是被触发最频繁的两个方法,所以在这里不应该执行过于消耗资源的方法。

() 当有其他Activity覆盖了当前Activity时,不论另一个Activity是新开始的还是从下层移至最上层的,当前Activity的()方法都会被触发。

onDestroy() Activity生命周期的终点。

有两种情况会导致它被触发:1)执行了Activity#finish()方法;2)Android系统由于资源 不足等原因决定杀掉Activity所在进程。

通过isFinishing()方法可以判断出是哪种情况。

在这个方法里,我们一般要做的事情是释放 Activity占有的资源,例如后台正在进行的下载线程等等。

最后,举个实际例子来说明,假设你有一个“首页Activity”和一个“编辑页Activity”。

当用户点击首页里的“开始编辑”按钮时,首页的onPause()->onStart()()依次触发,编辑页的onCreate()->onStart()->onResume()依次触发;(感谢James.H.Fu指出的错误) 当用户在编辑页按下“返回”按钮时,编辑页的onPause()->()依次触发,之后首页的onStart() -> onResume()依次触发; 这时用户在首页按下“返回”按钮,首页的onPause()->()->onDestroy()依次触发。

pacificrack:$12/年-1G内存/1核/20gSSD/500g流量/1Gbps带宽

pacificrack在最新的7月促销里面增加了2个更加便宜的,一个月付1.5美元,一个年付12美元,带宽都是1Gbps。整个系列都是PR-M,也就是魔方的后台管理。2G内存起步的支持Windows 7、10、Server 2003\2008\2012\2016\2019以及常规版本的Linux!官方网站:https://pacificrack.com支持PayPal、支付宝等方式付款7月秒杀VP...

3C云1核1G 9.9元 4核4G 16元 美国Cera 2核4G 24元

3C云互联怎么样?3C云互联专注免备案香港美国日本韩国台湾云主机vps服务器,美国高防CN2GIA,香港CN2GIA,顶级线路优化,高端品质售后无忧!致力于对互联网云计算科技深入研发与运营的极客共同搭建而成,将云计算与网络核心技术转化为最稳定,安全,高速以及极具性价比的云服务器等产品提供给用户!专注为个人开发者用户,中小型,大型企业用户提供一站式核心网络云端服务部署,促使用户云端部署化简为零,轻松...

百纵科技(1399元/月)香港CN2站群232IP

湖南百纵科技有限公司是一家具有ISP ICP 电信增值许可证的正规公司,多年不断转型探索现已颇具规模,公司成立于2009年 通过多年经营积累目前已独具一格,公司主要经营有国内高防服务器,香港服务器,美国服务器,站群服务器,东南亚服务器租用,国内香港美国云服务器,以及全球专线业务!活动方案:主营:1、美国CN2云服务器,美国VPS,美国高防云主机,美国独立服务器,美国站群服务器,美国母机。2、香港C...

activity生命周期为你推荐
RFIRFI整流,什么是RFI整流安全防护一般防护安全用具有几种blastp如何查找一个基因在毛果杨中的CDS、蛋白质和基因组序列?战棋类推荐几个好玩的战棋类的游戏wizardry哈利波特里的蛇院,狮院,獾院,鹰院. 分别指什么mapsourcemapsource下载gps后的航点、航迹怎么转换成mapgis格式?讯飞tts能配合讯飞语音tts使用的手机阅读器都有哪些赵锡成赵锡成夫人简介微店是什么微店和淘宝网店有啥区别?碰撞球碰撞分为哪几种,分别解释一下
双线主机租用 北京租服务器 域名解析文件 hostigation 美国主机评论 特价空间 网通服务器ip 免费网页申请 免费个人主页 hdsky 九零网络 zencart安装 美国服务器 远程登录 dbank 大硬盘分区 如何架设服务器 服务器监测软件 魔兽世界服务器维护 灵动:鬼影实录2 更多