LauchMode(加载模式)负责管理实例化,加载Activity的方式、并可以控制Activity与Task之间的加载关系。
为什么要谈加载模式,首先介绍Android对Activity的管理:
Android采用Task来管理多个Activity,当启动一个应用时,Android会相应的创建一个Task,然后启用入口Activity(即配置文件中的为MAIN和LAUCHER的Activity)。
4种启动模式的对比:
(假设再一次启用的Task中已存在Activity)
生成新Activity实例 | 重用已存在Activity | 公用一个Task | 特点 | |
standard | √ | × | √ | 不管Activity是否已存在,都会生成新的实例。 |
singleTop | ×(在栈顶) √(不在栈顶) | √(在栈顶) ×(不在栈顶) | √ | 除了Activity实例在栈顶时,复用已有实例。其他和standard基本一致。 |
singleTask | × | √ | √ | 在复用Activity时,如果已有实例不在栈顶,会把该Activity上的实例进行出栈,已达到是该Activity处于栈顶的目的,并进行复用。 |
singleInstance | √(对应task栈已被销毁) ×(对应的task栈未被销毁) | √(对应task栈未被销毁) ×(对应task栈已被销毁) | × | 无论从哪个Task中启动目标Activity,只会创建一个目标Activity实例,并使用一个全新的Task栈进行装载该Activity |