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

TTcloud(月$70)E3-1270V3 8GB内存 10Mbps带宽 ,日本独立服务器

关于TTCLOUD服务商在今年初的时候有介绍过一次,而且对于他们家的美国圣何塞服务器有过简单的测评,这个服务商主要是提供独立服务器业务的。目前托管硬件已经达到5000台服务器或节点,主要经营圣何塞,洛杉矶以及日本东京三个地区的数据中心业务。这次看到商家有推出了新上架的日本独立服务器促销活动,价格 $70/月起,季付送10Mbps带宽。也可以跟进客户的需求进行各种DIY定制。内存CPU硬盘流量带宽价...

无忧云-河南洛阳BGP,CEPH集群分布式存储,数据安全可靠,活动期间月付大优惠!

 无忧云怎么样?无忧云服务器好不好?无忧云值不值得购买?无忧云是一家成立于2017年的老牌商家旗下的服务器销售品牌,现由深圳市云上无忧网络科技有限公司运营,是正规持证IDC/ISP/IRCS商家,主要销售国内、中国香港、国外服务器产品,线路有腾讯云国外线路、自营香港CN2线路等,都是中国大陆直连线路,非常适合免备案建站业务需求和各种负载较高的项目,同时国内服务器也有多个BGP以及高防节点...

无忧云:服务器100G高防云服务器,bgpBGP云,洛阳BGP云服务器2核2G仅38.4元/月起

无忧云怎么样?无忧云值不值得购买?无忧云,无忧云是一家成立于2017年的老牌商家旗下的服务器销售品牌,现由深圳市云上无忧网络科技有限公司运营,是正规持证IDC/ISP/IRCS商家,主要销售国内、中国香港、国外服务器产品,线路有腾讯云国外线路、自营香港CN2线路等,都是中国大陆直连线路,非常适合免备案建站业务需求和各种负载较高的项目,同时国内服务器也有多个BGP以及高防节点。目前,四川雅安机房,4...

activity生命周期为你推荐
cs躲猫猫cs躲猫猫的游戏叫什么rs485协议RS232/RS485串行通信协议的解释充值卡充值买完充值卡了,怎么充值邮件服务器软件Windows邮件服务器软件那个好微信收费微信平台是否要收费如何收费印度it印度IT业与中国IT业的差异?深度剖析!没有nvidia控制面板为什么我的电脑点击右键没有NVIDIA控制面板lol内置语音lolQT内置语音在哪怎么用射击类网络游戏推荐几款射击类的网游射击类网络游戏射击网游有哪些游戏
域名解析服务器 rackspace 42u标准机柜尺寸 线路工具 申请空间 php空间申请 免空 双拼域名 福建铁通 天翼云盘 789电视剧 优酷黄金会员账号共享 双线机房 lamp兄弟连 域名转入 登陆qq空间 windows2008 美国达拉斯 电信测速器在线测网速 极域网 更多