启动模式
共有4个值:
- standard
默认模式 - singleTop
如果Activity已经在栈顶时,就不会被重新创建,同时它的onNewIntent方法会被回调,通过此方法的参数可以取出当前请求的信息。 - singleTask
如果Activity已经这个栈中,就不会被重新创建,同时它的onNewIntent方法也会被回调。
可以指定任务栈,在AndroidMenifest.xml文件中用属性TaskAffinity指定,标识一个Activity所需要的任务栈的名字,默认情况下,所有Activity所需任务栈的名字为应用的包名。
关于TaskAffinity,它主要和singleTask(指定任务栈名字)或allowTaskReparenting(应用A启动了应用B的某个Activity后,如果这个Activity的allowTaskReparenting属性为true,那么当应用B被启动后,这个Activity会直接从应用A的任务栈转移到应用B的任务栈)属性配对使用,其他情况下无意义。 - singleInstance
此模式下的Activity只能单独地位于一个任务栈中,可以认为是一种加强的singleTask模式。
(1)在AndroidMenifest.xml文件对应的Activity标签中指定,示例:
android:launchMode="singleTask"
(2)通过Intent设置标志位,示例:
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
第2种指定方式的优先级高,同时存在时,以第2种为准。
标志位
Activity的Flags有很多,常用的标记位有:
- FLAG_ACTIVTTY_NEW_TASK
等同于singleTask
- FLAG_ACTIVTTY_SINGLE_TOP
等同于singleTop
- FLAG_ACTIVTTY_CLEAR_TOP
- FLAG_ACTIVTTY_EXCLUDE_FROM_RECENTS
不会出现在Activity的历史列表里