温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

【Android学习总结】之Activity:深入理解、体验Activity的生命周期

发布时间:2020-07-23 21:44:23 来源:网络 阅读:932 作者:kinbos 栏目:移动开发

【本博客内的文章是本人的学习笔记总结,如有错误请各位批评指正,谢谢!欢迎加入群285077071讨论】

关于Activity的生命周期的学习,我将从以下几个方面入手来全面认识:

一、什么是生命周期?

二、Activity生命周期的官方定义

三、Activity生命周期流程图的理解

四、通过代码来切身体验每一个周期函数的执行时机

接下来,让我们开始进入正题吧。


一、什么是生命周期?

【Android学习总结】之Activity:深入理解、体验Activity的生命周期

生命周期,通俗来讲就是从生到死这一期间一系列的状态。大家可能在其他语言中早已经听说了这一概念,比如C语言中变量的生命周期,iOS开发中UIView的生命周期等。生命周期这个概念在不同的领域当中大体讲的差不多,只是划分的状态可能不同,有的划分粒度大一些,有的划分粒度要细一些。本文要讲的生命周期从宏观上来讲就是上图上所列举的那样:创建——>将要可见——>可见——>将要不可见——>销毁。


二、Activity生命周期的官方定义

Activities in the system are managed as an activity stack. When a new activity is started, it is placed on the top of the stack and becomes the running activity -- the previous activity always remains below it in the stack, and will not come to the foreground again until the new activity exits.

官方意思大体是这样Activity在系统中是通过Activity栈来进行管理的,当一个新的Activity被打开时,这个新的Activity就被放到栈的顶部并且保持运行状态,但在其之前的那个Activity总是保留在这个新Activity的下面,并且只有当这个新的Activity退出时原来的那个Activity才会重新回到前台。

三、Activity生命周期流程图的理解

让我们一起来看一下官方的这个生命流程图:

【Android学习总结】之Activity:深入理解、体验Activity的生命周期

该图引用自:http://developer.android.com/reference/android/app/Activity.html

为方便说明,在此我作了一点点的改动,其实也就是把注释说明换成中文而已了,哈哈。

【Android学习总结】之Activity:深入理解、体验Activity的生命周期

Activity的生命周期函数的执行时机都已经在图中作了简要说明,在此就不在赘述。


四、通过代码来切身体验每一个周期函数的执行时机

1、当我们启动应用程序时,生命周期函数执行顺序如下:

【Android学习总结】之Activity:深入理解、体验Activity的生命周期

2、当我们按下power键锁屏时,生命周期函数执行顺序如下:

【Android学习总结】之Activity:深入理解、体验Activity的生命周期

3、当我们再次解锁回到界面时,生命周期函数执行顺序如下:

【Android学习总结】之Activity:深入理解、体验Activity的生命周期

4、当我们点击按钮打开一个新的Activity时,生命周期函数执行顺序如下:

【Android学习总结】之Activity:深入理解、体验Activity的生命周期

5、当新打开的Activity退出时,生命周期函数执行顺序如下:

【Android学习总结】之Activity:深入理解、体验Activity的生命周期

6、当Activity退出时,生命周期函数执行顺序如下:

【Android学习总结】之Activity:深入理解、体验Activity的生命周期

7、最后一点,我们来验证下网上诸多网友博文中所说的:“当弹出Dialog时会执行onPause()函数”这一说法,这一说法正确吗?

【Android学习总结】之Activity:深入理解、体验Activity的生命周期

当Dialog弹出后我们来查看下输出日志信息:

【Android学习总结】之Activity:深入理解、体验Activity的生命周期

从输出日志我们可以发现,在弹出Dialog时根本没有执行onPause()函数,依然保持着可见状态。所以,网络上关于“当弹出Dialog时会执行onPause()函数”这一说法是错误的!


关于Activity生命周期的学习总结,到此就告一段落了!欢迎各位批评指正!


向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI