Activity的三种状态:
1.resumed:指当前Activity在屏幕前台(能被用户看的见)并且拥有用户焦点(用户可以与之交互,点击上面的按钮等)。
2.paused:指当前Activity在屏幕前台,但是不拥有用户焦点(用户不能点击该界面的控件)。
3.stopped:指当前Activity完全被遮蔽,对用户不可见。
下面用三张图分别来表示resumed、paused、stopped:
在paused的状态下,该activity是存活的,在内存中被保留,他维护所有状态和成员信息,并依然依附窗口管理器(window manager),但在系统内存极低的时候会被杀死。
stopped状态下,该activity也是存活的,他维护所有状态和成员信息,但不依附窗口管理器,并在内存极低时,被系统杀掉。
接下来举个例子:
如果我们project中,总共有三个Activity,分别为a、b、c。每个activity上面都有个按钮,点击之后分别进入到b、c,a为mainActivity。然后再分别按两次返回键。
那么在系统堆栈中是这样子的过程
当然有些应用的需求是想让整个过程中,堆栈中只有一个属于该app的activity,即一个时间段内,至多有一个activity(a,b,c不能共存),那么可以去AndroidManifest中设置activity的launchmode属性,它有四种属性分别是standard(默认)、singleTop、singleTask、singleInstance。具体的可以看该篇博客,我觉得已经讲的非常清楚,不懂的人可以在我博客下面留言。