现在的位置: 首页 > 综合 > 正文

Activity生命周期深入理解2

2014年01月25日 ⁄ 综合 ⁄ 共 867字 ⁄ 字号 评论关闭

今天又仔细的了解了一下activity的生命周期,主要任务是辨别在用户按下返回键和使用intent进行跳转的时候所执行的动作。

我们的实验过程是这样的。新建两个activity,分别是activity1,activty2,上面分别有一个button,执行从1跳转到2,以及从2跳转到1的过程。实验过程是:从activity1跳到2,再从2跳到1,然后按下返回键,再按下返回键,再按下返回键。

那么这样的过程主要分为五个阶段。

我们都知道,当执行跳转的时候,实际上是new 了一个目标activity的一个对象,然后将其压入了栈中。我们都知道处在栈的最上面的activity将会处于resume状态,可见,可与用户进行交互。按下返回键就是从栈中弹出最顶层的activity,并且将其destroy掉。那么这五个过程分别是:

第一个过程

1的oncreate,1的onStart,1的onResume

那么这三个过程不用说了,很简单

第二个过程,为向2跳转的过程

先是1的onPause,这样1不能再和用户交互了,然后开始准备2,先是2的oncreate方法,然后入栈,然后onStart,然后onResume,这个时候2准备好了,然后1便可以onStop,这便是第二个过程

第三个过程,向1跳转的过程

和过程2一样,但是这时候要注意,在activity的栈中现在有三个activity,从下到上分别为旧的activity1,然后是2,然后是新的activity1,新的处于resume状态。

第四个过程,按下返回键

这时候是从栈中弹出元素的过程,但是在彻底弹出之前得准备好将要激活的activity。过程如下:

1的onPause,然后是2的onRestart方法,然后是2的onStart方法,注意由于是在栈中存储的所以不会再create,然后是onResume方法,然后是onStop方法,最后彻底弹出,onDestroy方法

第五个过程,按下返回键

和第四个过程一样

当到达栈底的时候,弹出操作就无效了,比如home那个界面,你再按下返回键的时候是不会进行跳转的。

抱歉!评论已关闭.