standard:标准模式
-
每次启动app,TaskId都+1
每次点击按钮,TaskId不变
-
singleTop:Task顶单例模式
-
当将要被启动的Activity已经位于Task栈顶的时候,系统不会重新创建目标Activity的实例,而是直接复用已有的Activity实例
-
当将要被启动的Activity没有位于Task栈顶的时候,此时系统会重新创建目标Activity的实例,并且把它加载到Task的栈顶(此时与标准模式完全相同)
-
singleTask:Task内单例模式(A是standard,B是singleTask)
-
A->B,Task栈里面由下往上,A->B,B里面点击按钮,跳转到A,A是standard
-
Task栈里面由下往上,A->B->A,在这个A再点击跳转到B,B是singleTask,系统将B上面所有的Activity移出,让B进入栈顶,此时Task栈里面只有两个,A->B
B移除 |
A移除 |
B |
A |
【注意点】:
如果将要启动的目标Activity已经存在,但是没有位于栈顶,系统会把位于该Activity上面的所有Activity移除Task栈,使得目标activity转入栈顶
singleInstance:全局单例模式
系统保证无论从那个Task中启动目标Activity,只会创建一个目标Activity实例,并会使用一个全新的Task栈来装载该Activity实例