在上文中我们介绍了任务栈,这节讨论一下怎么使用并掌握它。
回顾上节:Android 管理任务和返回堆栈的方式是将所有接连启动的 Activity 放到同一任务和一个“后进先出”堆栈中。
我们不需要关注任务栈和Activity是怎么关联的,但是如果我们要想突破这种约定成俗的套路就需要了解本节课的主要内容了。
比如说:你希望应用中的某个 Activity 在启动时开启一个新的任务(而不是被放入当前的任务中),或者当你启动某个 Activity 时,希望调用它的一个现有实例(而不是在返回堆栈顶部创建一个新实例),或者希望在用户离开任务时清除返回堆栈中除根 Activity 以外的所有 Activity。
如果想实现上述目的,我们可以先讨论以下两个方法:
1、使用清单文件中的属性定义
2、在启动的时候给Intent做标记
使用清单文件
在清单文件中声明 Activity 时,可以使用 元素的 launchMode 属性指定 Activity 应该如何与任务关联。
launchMode 属性说明了 Activity 应如何启动到任务中。
launchMode 属性指定 4 种不同的启动模式:
"standard"(默认模式)
系统在启动该 Activity 的任务中创建 Activity 的新实例,并将 intent 传送给该实例。Activity 可以多次实例化,每个实例可以属于不同的任务,一个任务可以拥有多个实例。
"singleTop