Task 与Back Task 的LaunchMode学习

阅读更多
1.LaunchMode=“stand”
    a:同一task下。当一个task的back stack中出现的activity顺序为:A->B->C->A->B->C,无论何时在同一个task中,要打开一个activity A,都会重新实例化一个activity A, 这时顺序为:A->B->C->A->B->C->A。当你按back button时,会返回7次到主屏幕下(这里的task,我们假设是打开了一个新的应用,task才产生)。
    b:不同task下。当一个task的back stasck中出现的activity顺序为:A->B->C->A->B->C,你的另一个task X的back stack下的activity顺序为:D->T,这时你要在task X下打开一个activity A,这时task X的back stack的activity顺序为:D->T->A,返回3次,才能结束task X。
 
2.LauncheMode=singleTop
    a:同一个task下: 如果某个Activity的Launch mode设置成singleTop,那么当该Activity位于栈顶的时候,再通过Intent跳转到本身这个Activity,则将不会创建一个新的实例压入栈中。例如:现在栈的情况为:A B C D。D的Launch mode设置成了singleTop,那么在D中启动Intent跳转到D,那么将不会新创建一个D的实例压入栈中,此时栈的情况依然为:A B C D。但是如果此时B的模式也是singleTop,D跳转到B,那么则会新建一个B的实例压入栈中,因为此时B不是位于栈顶,此时栈的情况就变成了:A B C D B。
    b:不同的task下。 现在栈的情况为:A B C D,D的Launch mode设置成了singleTop。当你在另一个task X下(T->Y->E),打开activity D,则task X的顺序为:T->Y->E->D,也就是说,在另一个task下,会新实例化一个singleTop 的activity.
3.LaunchMode=singleTask
    a:同一个task下:假设当前的task:A->B,其中Activity B 是singleTask,当在B中跳转到A时,此时A->B->A(按返回键时,顺序:A->B->A),当在A中跳转到B时,此时:A->B->A(按返回键时,顺序:B->A)。
    b:不同的task下:假设当前的task Y:A->B->A,其中avtivity B时single task.当你按home键,再在手机上启动一个应用,此时的Task X,并且执行了一些activity:E->B->E。当task x的activity E跳转到activity B时,这时task x的back stack顺序:为E->B->E->A->B(按返回键:B->A->E->B->E,这时的back stack包含两个task(X,Y),当从B->A返回时,task Y就结束了,当从E->B->E,task X就结束了)
4.LaunchMode=singleInstance
   当一个应用X 的所有的activity(A,B)都在默认的task X下时,其中B是singleInstance,当启动activity A,顺序:A;然后在启动activity B,这时会新建一个task Y,这个task里只有一个activity B.在task Y中的activity A跳转到activity A,这时task X里的顺序:A->A,task Y:B。
最后,在task X中Activity A跳转到activity B时,会检查到有tack Y 里存在activity B,就会直接跳转到task Y的activity B 。这时,又有一个task z(比如按home键,到手机界面上按了一个应用的快捷方式),顺序:U,这时在activity U中跳转到activity B, 会检查到有tack Y 里存在activity B,就会直接跳转到task Y的activity B,此时task Z顺序:U,task Y顺序:B。然后我们又假设两种操作:
   1.在task Y中的activity B 跳转到task X的activityA,这时task X顺序:A->A->A,当我们按返回键时,依次为:A->A->A->B->U。此时所有task的顺序为:task X->task Y->task U
   2.在task Y中的activity B中直接按返回键,依次为:B->U.因为此时所有task 的顺序为:task Y->task Z->Launcher->task X(A->A)

你可能感兴趣的:(android,task,launchMode,back,stack)