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()依次触发。

华纳云新人下单立减40元/香港云服务器月付60元起,香港双向CN2(GIA)

华纳云(HNCloud Limited)是一家专业的全球数据中心基础服务提供商,总部在香港,隶属于香港联合通讯国际有限公司,拥有香港政府颁发的商业登记证明,保证用户的安全性和合规性。 华纳云是APNIC 和 ARIN 会员单位。主要提供数据中心基础服务、互联网业务解决方案, 以及香港服务器租用、香港服务器托管、香港云服务器、美国云服务器,云计算、云安全技术研发等产品和服务。其中云服务器基于成熟的 ...

Megalayer美国独立服务器配置及性能速度综合评测

Megalayer 商家在之前也有记录过,商家开始只有提供香港站群服务器和独立服务器,后来也有增加到美国独立服务器,以及前几天也有介绍到有增加香港VPS主机。对于香港服务器之前有过评测(Megalayer香港服务器配置一览及E3-1230 8GB服务器评测记录),这里申请到一台美国独立服务器,所以也准备简单的评测记录。目前市场上我们看到很多商家提供VPS或者云服务器基本上没有什么特别的,但是独立服...

VirMach(8元/月)KVM VPS,北美、欧洲

VirMach,成立于2014年的美国IDC商家,知名的低价便宜VPS销售商,支持支付宝、微信、PayPal等方式付款购买,主打美国、欧洲暑假中心产品,拥有包括洛杉矶、西雅图、圣何塞、凤凰城在内的11个数据中心可以选择,可以自由搭配1Gbps、2Gbps、10Gbps带宽端口,有Voxility DDoS高防IP可以选择(500Gbps以上的防御能力),并且支持在控制面板付费切换机房和更换IP(带...

activity生命周期为你推荐
trapezoid梯形中最多有多少个直角?boltzmann波尔兹曼常数的值是多少ucosiiucosii是什么?里面的OS是指什么?在看正点原子给的stm32f407开发指南的时候看到这个,什么意思?aftereffectAfter effect Premere分别是什么软件,做什么的?安卓模拟器哪个好用手机模拟器哪个好用?求推荐。运行时错误1004ipad下载时出现错误1004是怎么回事?该怎么解决?系统登录界面怎么样将系统登陆界面设置为可以切换到窗口登陆?系统登录界面电脑启动总是出现登录界面怎么解决vrrp配置路由器的配置子模式有哪些传奇私服教程怎样开传奇SF?我要具体详细的步骤
安徽虚拟主机 看国外视频直播vps 免费域名申请 新网域名管理 香港ufo 亚洲大于500m 仿牌空间 优惠码 seovip 申请空间 免费ftp站点 丹弗 嘉洲服务器 e蜗 空间出租 圣诞促销 微信收钱 刀片服务器的优势 tna官网 广州服务器 更多