也许是我的英文理解能力问题,Google关于launchMode的描述总是让我困惑,所以我就分别测试了这几种模式,按照我的理解重新整理一下文字
A - standard:默认模式,总是创建新的A实例,同一个任务可以有多个A的实例
Task堆栈:A1->A2->A3->A4
B - singleTop:类似于standard,不过,当堆栈顶部是B的实例时,不会创建新的B实例(A1创建B1, 这时B1可以创建A2,但不能创建B的新实例,A2可以创建新的B实例)
Task堆栈:A1->B1->A2->B2
C - singleTask:B1在新的task创建C的实例,C可以在自己的task中创建B2和A2,A2启动C时,不会创建新的C实例,而是直接转到C的当前实例,并且,C返回时,直接返回启动C的B1,而不是转入C之前的A2
Task堆栈:A1->B1
\
C->B2->A2
D - singleInstance:类似于singleTask,但新的task只能有D一个实例,D启动的B2会在原来的task创建。B2无法返回D,而是返回到B1,A1退出后,可以看到D还在。
Task堆栈:A1-B1 B2->A2
\ /
D