目录
一,Activity的生命周期
1.Activity活动栈
众所周知,Android中的Activity是可以层叠的,当我们启动一个新的Activity时,就会叠加在旧的Activity上,点击Back销毁Activity,上一个Activity就会重新显示出来,之所以会这样,是因为Android是使用活动栈(也叫返回栈)来管理Activity的。
每启动一个新的Activity,它就会在活动栈中入栈,并处于栈顶位置,按下Back健销毁Activity后,它就会出栈,下一个Activity就会重新处于栈顶位置,屏幕上显示的总是栈顶的Activity。
2.Activity状态
Activity在内存中右四种存在状态:
(1)运行状态:
当Activity处于活动栈栈顶时,Activity就处于运行状态。此时的Activity需要和用户进行交互,所以系统尽可能不会回收处于运行状态的Activity。
(2)暂停状态:
当Activity不再处于栈顶位置,但是仍然可见时,就处于暂停状态。例如弹出对话框时,对话框下面的Activity就处于暂停状态。因为暂停状态的Activity仍然可见,所以系统也是尽可能不会回收暂停状态的Activity,除非内存极低的情况,系统才会考虑回收。
(3)停止状态:
当Activity不再处于栈顶位置,并且不可见时,就处于停止状态。因为处于停止状态的Activity可能会被重新启动,所以系统会为这种Activity保存用户状态信息,但当系统内存不够时,会优先杀死该类Activity。
(4)销毁状态:
当Activity从活动栈中移除时就变成了销毁状态。系统会回收该类Activity以保证内存充足。
3.Activity状态之间的切换
Activity类中定义了七个回调方法,覆盖率Activity生命周期的每一个环节,每当Activity的状态改变时,这些方法就会被调用:
- onCreate():创建方法。在Activity第一次被创建时调用,每当我们创建一个新的Activity时,都会重写一次onCreate方法。在这个方法中应当完成加载布局和绑定事件等操作;
- onStart():启动方法。在Activity每次由不可见变为可见时调用;
- onResume():在Activity准备好与用户交互时调用,此时Activity一定位于活动栈的栈顶,并且处于运行状态;
- onPause():暂停方法。在系统准备去启动或者恢复另一个Activity时调用,或者说是当前Activity进入暂停状态之前调用。通常会在这个方法中将一些消耗CPU的资源释放,以及保存一些关键数据。这个方法的执行速度一定要快,否则会影响到新的Activity的使用;
- onStop():停止方法。这个方法在Activity完全不可见时调用。
- onDestroy():销毁方法。在Activity销毁之前调用。
- onRestart();重启方法。在Activity由停止状态变为运行状态之前调用,重启之后Activity重新位于活动栈栈顶,被用户可见;