Activity的四种启动模式
1.standard,被启动的Activity会运行在启动它的Activity所在的栈中,每次启动都会新建一个Activity实例。
2.singleTop,如果新的Activity已经有位于栈顶的实例,那么它不会新建实例,但是会调用它的onNewIntent方法。如果栈中有Activity的实例但是不是位于栈顶,还是会新建一个实例。
3.singleTask,首先系统会寻找是否存在A想要的任务栈,不存在就创建一个新的任务栈,如果存在就看栈中是否有改活动的实例存在,存在就将其调到栈顶,否则就新建一个实例。将其调到栈顶会弹出其上的所有活动。
4.singleInstance ,具有singleTask的所有特点,另外一点,此模式的Activity只能单独位于一个任务栈。
Activity的任务栈
参数TaskAffinity标识了一个Activity所需要的任务栈的名字,默认情况下为应用的包名。
Activity的allowTaskReparenting属性为true的话,允许Activity在不是TaskAffinity指定的任务栈中,但当TaskAffinity指定的任务栈存在时,需要转移回自己的任务栈。如应用A启动了应用B的ActivityC,当按home键回到桌面启动应用B后,C就会回到B的任务栈中。
当TaskAffinity和singleTask模式配对使用的时候,待启动的Activity会运行在名字和TaskAffinity相同的任务栈中。
指定启动模式
1.通过AndroidMenifest为Activity指定启动模式,
< acitivity
android: lanchMode="">