一、Android系统中的任务栈,类似于一个容器,用于管理所有的Activity实例,
有先进后出的原则,如图:
进入时:
出栈时:
二、我们都知道Activity有四种启动模式 ,分别为standard、singleTop、singleTask、singleInstance。
1.standard启动模式;
1)此模式为activity的默认启动模式,即在不指定activity的情况下,所有的activity皆是在此模式下。
2)在standard模式下,启动一个新的activity,它就会进入任务栈,并处于栈顶的位置。
3)如图所示,每当有新的activity建立,它会自动创建一个新的实例,并处于栈顶。
4)入栈时,Activity01,Activity02,Activity03,依次入栈;
出栈时,处于栈顶的Activity03先出栈,之后是Activity02,最后是Activity01。
2.singleTop启动模式;
此模式与standard类似,
1)区别是启动了一个Activity处于栈顶时,再次启动时,不再创建新的实例;
如果启动的Activity没有位于栈顶时,则在创建一个新的实例位于栈顶。
2)如图所示:当前栈顶为Activity03,
若启动的页面仍为Activity03,则复用Activity03;
若启动的页面为不是栈顶的Activity02,则新建Activity04作为栈顶。
3.singleTask启动模式;
1)此模式下,整个Activity有且只有一个实例。
2)每次启动Activity的模式时,系统会检查是否存在该实例,若存在该实例,则直接使用该实例,并且将该Activity之上的所有Activity出栈。
如果没有,则自动生成新的实例。
3)如图:依次入栈Activity01,Activity02,Activity03;想要再次启动Activity02,则复用Activity02,并将Activity03移除该栈。
4.singleInstance启动模式;
1)此模式下,Activity在整个系统中有且只有一个实例,其中,最大的不同是Activity会启动i一个新的任务栈。
2)若启动的Activity不存在,系统会创建一个新的任务栈,再创建一个新的Activity实例,并把该Activity加入栈顶;
若启动的Activity已经存在,系统会把该Activity所在的任务栈转到前台,从而使该Activity显现出来。