Activity的生命周期

496 阅读2分钟

一、Activity的生命周期图

二、Activity的生命周期图解释

1.活动启动,运行onCreate()和onStart()方法

在这里,活动是可见的,不过它还没有得到焦点,用户还不能与活动交互。

2.onResume()方法在onStart()方法后执行。活动将要移到前台时会调用这个方法

运行onResume()方法之后,这个活动得到了焦点,用户可以与活动交互。

3.活动不再处于前台时会运行onPause()方法

运行onPause()方法后,活动仍可见,但是没有得到焦点,这时候用户无法与该活动交互

4.如果活动再次移入前台,会调用onResume()方法

如果活动反复地失去和再次得到焦点,活动可能会多次进入这个循环

5.如果活动不再对用户可见,会调用onStop()方法

运行onStop()方法后,活动不再可见

6.如果活动再次对用户可见,会调用onRestart()方法,接下来会调用onStart()和onResume()方法

活动可能会多次进入这个循环

7.活动被撤销,会调用onDestroy()

活动从运行状态移至撤销状态时,在活动撤销前会调用onPause()方法,通常还会调用onStop()方法。

三、一些常见活动动作生命周期方法的执行顺序

1.创建到显示
onCreate-->onStart-->onResume

2.销毁
onPause-->onStop-->onDestroy

3.横竖屏切换
onPause-->onStop-->onDestroy-->onCreate-->onStart-->onResume

4.从A页面跳转到B页面,再从B页面点击返回A页面(B页面完全覆盖A页面的情况)
A-onPause-->B-onCreate-->B-onStart-->B-onResume-->A-onStop
-->B-onPause-->A-onRestart-->A-onStart-->A-onResume-->B-onStop-->B-onDestroy

5.从A页面跳转到B页面,再从B页面点击返回A页面(B页面不完全覆盖A页面的情况)
A-onPause-->B-onCreate-->B-onStart-->B-onResume
-->B-onPause-->A-onResume-->B-onStop-->B-onDestory

四、关于Activity生命周期的方法还有几点要说明的地方

1.活动会绕过onPause()和onResume(),直接从onStart()调用onStop(),如果一个活动在出现在前台之前(这时候活动是可见的)停止或者被撤销,调用onStart()方法后直接onStop()方法,而绕过onResume()和onPause()方法。

2.如果一个活动是可见的,不过从来不在前台,而且不会的得到焦点,就永远不会调用onPause()和onResume()方法。

3.活动出现在前面而且得到焦点时会调用onResume()方法。如果活动自是可见但是出现在其他活动的后面,就不会调用onResume()方法。类似的,活动不在前台时会调用onPause()方法,但是如果活动永远不在前台,也就没有机会调用这个方法。