- 《Android自定义View之Activity页面的组成》
- 《Android Activity——启动过程探索(一)》
- 《Android Activity——启动过程探索(二)》
- 《Android Activity——启动过程探索(三)》
- 《Activity 启动模式及任务栈探究》
- 《Activity常见问题》
Activity 启动模式及任务栈探究
在Android中,默认情况下,当我们启动一个Activity的时候,系统会创建一个Activity实例然后将它放入任务栈(任务栈是一个 “后进先出” 的栈结构)中,当我们按 back 键返回时,这些Activity就会一一回退。但是当我们重复启动一个Activity多次时,就会创建多个该Activity的实例,同样返回时要多次返回一个一个退出才行,在很多情况下,这种模式是很不友好的,所以Android就提供了启动模式来修改系统默认的行为。
定义 Activity 的启动模式
可以通过两种方式定义不同的启动模式:
-
使用清单文件
在清单文件中声明 Activity 时,修改
launchMode
属性值来达到修改启动模式的作用。该方式下有四种值可取:standard、singleTop、singleTask、singleInstance。 -
使用 Intent 标志
调用
startActivity()
时,可以在 Intent 中加入一个标志(flag),来达到修改启动模式的作用。该方式下Intent有比较多的 Intent.FLAG_XXX 可取,如:Intent.FLAG_ACTIVITY_NEW_TASK
、Intent.FLAG_ACTIVITY_CLEAR_TOP
等具体的可以查看源码。
注1:某些适用于清单文件的启动模式不可用作 Intent 标志,同样,某些可用作 Intent 标志的启动模式无法在清单文件中定义(如:清单文件形式无法直接为 Activity 设置为 Intent.FLAG_ACTIVITY_CLEAR_TOP
标识,而Intent标识无法指定Activity为 singleInstance
模式)。
注2:如果同时给一个Activity使用了上述两种方法指定启动模式,那么使用 Intent 标识的优先级更高。</