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

Spinservers:美国圣何塞机房少量补货/双E5/64GB DDR4/2TB SSD/10Gbps端口月流量10TB/$111/月

Chia矿机,Spinservers怎么样?Spinservers好不好,Spinservers大硬盘服务器。Spinservers刚刚在美国圣何塞机房补货120台独立服务器,CPU都是双E5系列,64-512GB DDR4内存,超大SSD或NVMe存储,数量有限,机器都是预部署好的,下单即可上架,无需人工干预,有需要的朋友抓紧下单哦。Spinservers是Majestic Hosting So...

HostKvm - 夏季云服务器七折优惠 香港和韩国机房月付5.95美元起

HostKvm,我们很多人都算是比较熟悉的国人服务商,旗下也有多个品牌,差异化多占位策略营销的,商家是一个创建于2013年的品牌,有提供中国香港、美国、日本、新加坡区域虚拟化服务器业务,所有业务均对中国大陆地区线路优化,已经如果做海外线路的话,竞争力不够。今天有看到HostKvm夏季优惠发布,主要针对香港国际和韩国VPS提供7折优惠,折后最低月付5.95美元,其他机房VPS依然是全场8折。第一、夏...

RAKsmart 2021新年新增韩国服务器及香港美国日本VPS半价

RAKsmart 商家我们肯定不算陌生,目前主要的营销客户群肯定是我们。于是在去年的时候有新增很多很多的机房,比如也有测试过的日本、香港、美国机房,这不今年有新增韩国机房(记得去年是不是也有增加过)。且如果没有记错的话,之前VPS主机也有一次磁盘故障的问题。 这不今天有看到商家新增韩国服务器产品,当然目前我还不清楚商家韩国服务器的线路和速度情况,后面我搞一台测试机进行...

activity生命周期为你推荐
ie9下载我的电脑是ie11怎么装ie9blastp如何查找一个基因在毛果杨中的CDS、蛋白质和基因组序列?html源代码求一个简单的HTML代码,在线等,急充值卡充值买完充值卡了,怎么充值什么是fpgaFPGA 图像处理协亨为什么协亨的手机卖这么便宜~?没有nvidia控制面板电脑没有nvidia显卡控制面板是怎么回事tplink端口映射TP-LINK 路由器怎么端口影射啊?哪位高手知道!3d规则福利彩票3D的中奖规则从零开始学android从零开始学习开发android系统应该看哪些书籍?还有开发android需要java基础看什么书学习比较好?
网站空间价格 韩国加速器 512av 42u机柜尺寸 创宇云 ubuntu更新源 骨干网络 东莞数据中心 域名和空间 国外免费asp空间 新睿云 免费的域名 全能空间 日本代理ip 服务器防火墙 实惠 阿里云邮箱登陆 免费php空间 如何登陆阿里云邮箱 七牛云存储 更多