
在Activity从建立到销毁的过程中需要在不同的阶段调用7个生命周期方法。
这7个生命周期方法的定义为:
1. public void onCreated(Bundle savedInstanceState)
2. public void onStart()
3. public void onResume()
4. public void onPause()
5. public void onStop()
6. public void onRestart()
7. public void onDestroy()
7个生命周期方法分别在4个阶段按一定顺序进行调用。
这4个阶段为:
1. 开始Activity:在这个阶段依次执行3个生命周期方法,onCreate、onStart和onResume。
2. Activity失去焦点:如果在Activity获得焦点的情况下进入其他的Activity或应用程序,当前的Activity失去焦点。在这一阶段会依次执行,onPause和onStop方法。
3. Activity重新获得焦点:如果Activity重新获得焦点,会依次执行3个生命周期方法,onRestart、onStart和onResume。
4. 关闭Activity:当Activity被关闭时系统会依次执行3个生命周期方法,onPause、onStop和onDestroy。
如果在这4个阶段执行生命周期方法的过程中不发生状态的改变,系统会按照上面描述的依次执行这4个阶段中的生命周期方法,但是,如果在执行过程中改变了状态,系统会按照更复杂的方式调用生命周期方法。
在执行的过程中可以改变系统的执行轨迹的生命周期方法是onPause和onStop。
如果在执行onPause方法的过程中Activity重新获得了焦点,然后又失去焦点。系统将不会执行onStop方法,而是按onPause、onResume、onPause顺序执行相应的生命周期方法。
如果在执行onStop方法的过程中Activity重新获得焦点,然后有失去焦点。系统将不会执行onDestroy方法,而是按onStop、onRestart、onStart、onResume、onPause和onStop顺序执行相应的生命周期方法。
我们可以从这个Activity生命周期图看出,图中包含两层循环。第一层:onPause、onResume和onPause,这一层循环称为焦点生命周期。这一层循环在Activity焦点的获得与失去的过程中循环,在这一过程中Activity始终是可见的。第二层:onStop、onRestart、onStart、onResume、onPause和onStop,这一层循环称为可视生命周期。这一层循环在Activity可见与不可见的过程中循环,在这个过程中伴随着Activity焦点的获得与失去,也就是说,Activity首先会被显示,然后会获得焦点,接着会失去焦点,最后由于弹出其他的Activity,是当前的Activity变成不可见。所以Activity生命周期有3种:可视生命周期、焦点生命周期和整体生命周期。