关于四种启动模式该博主已经说的很详细了:细谈Activity四种启动模式
我想补充几点:
- 1.启动模式-singleTask,两个activity A和B,B为singleTask
activity打开顺序 :A->B->A->B
此时当A第二次打开的时候,栈从底到最上是ABA,当A再打开B的时候,为了保证同个栈里只有一个实例,那么此时会把最上面的A弹出,打开B,此时的栈为:AB,而且会调用B的onNewIntent()方法 - 2.启动模式-singleInstance,两个activity A和B,B为singleInstance,从A打开B,那么此时就有两个栈,一个栈只有一个A,一个栈只有一个B,此时显示的是B界面,点返回此时返回到A栈的A界面,注意此时B栈并没有被销毁,再点返回回到了B栈的B界面,再点返回才会返回到桌面
-
3.Activity的Flags
3.1:FLAG_ACTIVTTY_NEW_TASK 相当于singleTask
3.2:FLAG_ACTNITY _SINGLE_TOP相当于singleTop
3.3:FLAG_ACTIVITY_CLEAR_TOP会把该activity之上的全部弹出
一般这两个会配合使用:
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);