Activity生命周期

回顾一下Activity的生命周期执行流程,先上个基本流程图

Activity生命周期_第1张图片

上图展现的是一个Activity正常的生命周期和异常情况下的生命周期(比如Configuration变化,系统回收导致的activity销毁等)。

除此之外,需要注意两个Activity切换过程中,两个Activity生命周期的执行顺序。

如上图所示,创建两个Activity,分别是ActivityFirst、ActivityLifeCycle.  那么ActivityLifeCycle跳转到ActivityFirst,两个Activity的生命周期执行顺序是什么样的呢?

Activity生命周期_第2张图片

可以看到,在执行startActivity操作之后,首先会执行ActivityLifeCycle的onPause(),然后才开始ActivityFirst的生命周期,ActivityFirst创建成功后,才执行ActivityLifeCycle的onStop方法。由此可知,不能在onPause()执行耗时操作的另一原因是,会影响目标Activity的启动。

接下来我们在看下,从ActivityFirst返回到ActivityLifeCycle,两个Activity的生命周期执行顺序是怎么样的。

Activity生命周期_第3张图片

其实与前面类似,会先调用当前Activity的onPause(), 然后会回调目标Activity的onRestart()、onStart()、onResume()方法,最后回调本Activity的onStop(), onDestory()方法。同样的不要在onPause()中执行耗时操作,另外很多同学喜欢在onDestory做些资源方式、解注册等操作,但是由于当前Activity的onDestory()是在目标activity的onResume()方法回调之后才会执行,在某些场景下, 在当前Activity的onDestory()中执行解注册,在目标Activity的onResume()执行注册,这个时候,由于onResume()先执行,就会导致注册失败,所以建议在onPause()中判断是否处于isFinishing状态,是的话则进行资源释放操作,前提是不耗时。

从整个生命周期来说,onCreate和onDestory是配对的,分别标志着Activity的创建和销毁,并且只可能有一次调用。从Activity的是否可见来说,onStart和onStop是配对的,随着用户的操作或者设备屏幕的点亮和熄灭,这两个方法可能被调用多次;从Activity是否处于前台来说,onResume和onPause是配对的,同样的这两个方法可能会被调用多次。

你可能感兴趣的:(Android)