Intent.FLAG_ACTIVITY_NEW_TASK 理解

2018-10-09  本文已影响2196人  3Q竹林
首先要强调下,下边两个LaunchMode启动模式功能,已作区分:
FLAG_ACTIVITY_NEW_TASK 比较标准解释如下:

首先会查找是否存在和被启动的Activity具有相同的亲和性的任务栈(即taskAffinity,注意同一个应用程序中的activity的亲和性相同),如果有,则直接把这个栈整体移动到前台,并保持栈中旧activity的顺序不变,然后被启动的Activity会被压入栈,如果没有,则新建一个栈来存放被启动的activity,注意,默认情况下同一个应用中的所有Activity拥有相同的关系(taskAffinity).

个人理解:

默认情况下同一个应用中的所有Activity,都拥有相同的关系(taskAffinity),即由FLAG_ACTIVITY_NEW_TASK开启的新Activity,也都在同一个任务栈中(与Application相同的任务栈),若想使新Activity进入不同栈中,则还需要如下配置:

<activity
  android:name=".ui.activity.OtherTaskActivityXXX"
  android:taskAffinity="android.task.browser"/> //注意这里的 taskAffinity

并且在该OtherTaskActivityXXX页面中,若再开启的其他页面,那么所有的其他页面,都将被压入到这个新的任务栈中。

查看任务栈Id:

int TaskId = mActivity.getTaskId();
上一篇下一篇

猜你喜欢

热点阅读