Activity有四种加载模式
设置方式 android:launchMode="singleTask"
当通过这种模式来启动Activity时,Android总会
为目标
Activity创建一个新的实例,并将该Activity添加到当前 Task栈
中.注意,这种方式不会启动新的Task
,只是将新的
Activity添加到原有的Task
假设 栈结构为 ABC
再打开C
就会变成 ABCC
该模式和standard模式基本一致,但有一点不同:当将要被 启动的Activity已经位于Task栈顶时,系统不会重新创建 目标Activity实例,而是直接复用Task栈顶的Activity
ABC
再打开C
C
为singleTop
就会变成 ABC
ABCD
再打开C
C
为singleTop
就会变成 ABCDC
采用该加载模式时,Activity在同一个Task内只有一个实例.
当系统采用singleTask模式加载Activity时,又分为以下 三种情况:
ABC
再打开B
B
为singleTask
就会变成 AB
在此种加载模式下,无论从哪个Task中启动目标Activity,只会
创建一个目标Activity
实例且会用一个全新的Task栈
来装载该
Activity实例
.并且该Task栈有且仅有一个Activity实例
当系统采用singleInstance模式加载Activity时,又分为以下 两种情况:
A
,再打开B
,B
为singleInstance
,就会新建一个栈结构(Task2),栈结构(Task1)中为A
,栈结构(Task2)中为B
C
,那么 栈结构(Task1)中为AC
A
也就是显示的是A页面
而不是B页面
B
页面 而不是退出程序Home键
退出程序 再点击后台进程图标显示的是B页面 ,如果点击桌面图标的话则显示的是A页面Home键
就会清空栈结构(Task2) 再次点击后台进入 如果再点后退的话,就会退出程序