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

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

一、什么是生命周期?

二、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生命周期流程图的理解

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


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

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


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


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

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


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


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


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


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


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


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


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


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


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