1、Android应用程序不能控制自己的进程的生存期。Android运行时管理着每个应用程序的进程。也就是说Android运行时管理着所有的Activity。

2、正如前文《Android系统回顾(四):Android应用程序的生命周期》里提到的那样,Activity的状态还可以影响其所在的应用程序的优先级。而反过来,应用程序的优先级又会影响其所包含的Activity。

3、Android运行时会维护一个由当前所有正在运行着的Activity组成的先进后出的集合,这个集合就是Activity栈。每一个Activity的状态是由它在Activity栈中所处的位置决定的。当一个新的Activity被启动时,它就变成“活动”状态,并被移至栈顶。如果用户按下“返回键”回到上一个Activity,或者当前活动的Activity被关闭,那么栈次顶端的Activity就会取而代之成为“活动”Activity并弹至栈顶。

4、Activity的四种状态

a、活动状态

位于栈顶的Activity,这时它在屏幕最顶层,具有焦点可以接收用户输入。Android会不惜一切代价保证它的运行。当另一个Activity被启动时将会取而代之成为“活动”Activity,这时原来的“活动”Activity如果还可见(只是被新启动的Activity遮住部分)将转至“暂停状态”,如果已经不可见将转至“停止状态”。

b、暂定状态

Activity还可见,但是不是在屏幕最顶层,没有焦点不能接受用户输入(这种情况一般出现在Activity被另一个半透明或者非全屏的Activity遮住)。在极端的情况下Android才会牺牲“暂停”Activity以保证活动Activity运行。

c、停止状态

完全不可见,但是仍在内存中,仍在Activity栈中。如果系统急需内存资源就会去终止停止的Activity,所以当Activity转为“停止状态”时,需要注意保存Activity状态(将内存数据写到SD卡)。

d、非活动状态

被终止之后,在再次启动之前,Activity处于非活动状态。非活动状态的Activity不在内存中,不在Activity栈中。

5、状态转变与函数回调简图

android 后台activity权限 android activity管理机制_活动状态