Android多任务显示

第一种方式,添加Flag

  在目标清单文件中添加属性值

1
2
3
4
5
<Activity
...
android:launchMode="standard"
...
/>

  在使用Intent跳转页面时,给Intent添加如下Flag,即启动后以新的任务窗口显示在后台中

1
2
3
4
5
6
Intent intent = new Intent(this, VideoMainActivity.class);
// 此标志用于将文档打开到一个 基于此意图的新任务中
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_DOCUMENT);
// 此标志用于创建新任务并将活动导入其中
intent.addFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
startActivity(intent);

第二种方式,配置清单文件

documentLaunchMode(启动模式):

  1. intoExisting: 如果之前已经打开过,则会打开之前的(类似于 Activity 的 singleTask);
  2. always: 不管之前有没有打开,都新创建一个(类似于 Activity 的 standard);
  3. none: 不会在任务列表创建新的窗口,依旧显示单个任务;
  4. never: 不会在任务列表创建新的窗口,依旧显示单个任务,设置此值会替代 FLAG_ACTIVITY_NEW_DOCUMENT 和 FLAG_ACTIVITY_MULTIPLE_TASK 标志的行为(如果在 Intent 中设置了其中一个标志)。

注意:对于除 none 和 never 以外的值,必须使用 launchMode="standard" 定义 Activity。如果未指定此属性,则使用 documentLaunchMode="none"

excludeFromRecents(离开是否从任务列表移除):

  1. false: 离开页面不会从任务列表移除该页面(默认值)
  2. true: 离开页面后,将会从任务列表移除该页面

maxRecents(设置应用能够包括在概览屏幕中的最大任务数):
  整型值,默认为16,上限为50,达到最大任务数后,最近最少使用的任务将从概览屏幕中移除

1
2
3
4
5
<activity
android:name=".MainActivity"
android:documentLaunchMode="intoExisting"
android:excludeFromRecents="false"
android:maxRecents="3"/>

第三种方式,配置清单文件

  给Activity添加一个taskAffinity属性,这样的好处是,taskAffinity属性值相同的Activity之间相互跳转不会启用新的任务窗口
  如果使用该方式,launchMode属性的值不可为standard,否则将不会生效

1
2
3
4
5
<activity
android:name=".MainActivity"
android:exported="true"
android:launchMode="standard"
android:taskAffinity="com.example.test.main" />