Android 四大启动模式
Activity 的 LaunchMode
默认情况下,多次启动同一个 Activity 时,系统会创建多个实例并把它们一一放入任务栈中,当我们按 back 健时,这些 Activity 会一一回退。任务栈是一种“后进先出”的栈结构,即每按一下 back 健就会有一个 Activity 出栈,直到栈空为止,当栈中无任何 Activity 时,系统会回收这个任务栈。
四种启动模式:standard、singleTop、singleTask 和 singleInstance。下面介绍各种启动模式的含义及使用例子。
一、standard – 默认模式
standard:标准模式也是系统的默认模式。每次启动一个 Activity 都会重新创建一个新的实例,不管这个实例是否已经存在。这种模式下,谁启动了这个 Activity,那么这个 Activity 就运行在启动它的那个 Activity 所在的栈中。如 Activity A 启动了 Activity B(B 是标准模式),那么 B 就会进入到 A 所在的栈中。
当我们用 ApplicationContext 去启动 standard 模式的 Activity 时会报错
这是因为 standard 模式的 Activity 默认会进入启动它的 Activity 所属的任务栈中,由于非 Activity 类型的 Context (如 ApplicationContext)并没有所属的任务栈,所以就出问题了。解决方法是为待启动 Activity 指定 FLAG_ACTIVITY_NEW_TASK 标记位,这样启动的时候会创建一个新的任务栈,这时待启动的 Ac