Activity生命周期
1. 生命周期函数汇总
Activity的生命周期函数包括:onCreate()、onStart()、onResume()、onPause()、onStop()、onRestart()以及onDestroy()。
需要注意的是:
1.1 生命周期方法=成对出现
onCreate()与onDestroy()成对出现;
onStart()与onStop()成对出现;
onResume()与onPause()成对出现
1.2 onStart()&onStop()、onResume()&onPause()
onStart()&onStop():从Activity是否完全可见的角度进行回调;
onResume()&onPause():从Activity是否位于前台的角度进行回调(Activity是否位于UI最顶层);
1.3 当前Activity为A,此时打开ActivityB,A的onPause与B的onResume哪个先执行?
先是A的onPause()、再是B的onResume()。
Activity的启动过程:由ActivityManagerService(AMS)对栈内的Activity状态进行管理和规定,新Activity启动前,栈顶的Activity必须先onPause,才能启动新的Activity(执行onResume)。
2. 生命周期调用时刻和使用场景
Activity各种生命周期以及之间的转化关系:

Activity各种生命周期回调函数的调用时刻如下:

3. 常见场景的调用顺序
正常场景下的调用:

异常情况下的调用:
- 当前Activity被完全覆盖或者正处于后台,此时更高优先级的进程需要内存,但系统内存不足,此时当前Activity会从onStop()状态直接被系统杀死进程。之后当用户退回该Activity时,会再次从onCreate()开始调用。
系统内存不足时会按照优先级杀死目标Activity进程,优先级从高到低为:
- 完全可见,位于前台用于交互的Activity
- 部分可见的Activity,即有弹窗
- 完全不可见,位于后台的Activity
- 资源相关的系统配置发生改变(如横屏切换竖屏)

也可不重新创建Activity从而不回调onSaveInstanceState()方法以及onRestoreInstanceState()方法:设置Activity的configChanges属性,此时系统回调onConfigurationChanged()方法。
4. 与Fragment生命周期对比
