Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/183.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android:FLAG_ACTIVITY_NEW_TASK是否在同一流程中生效?_Android_Android Activity_Stack_Task - Fatal编程技术网

Android:FLAG_ACTIVITY_NEW_TASK是否在同一流程中生效?

Android:FLAG_ACTIVITY_NEW_TASK是否在同一流程中生效?,android,android-activity,stack,task,Android,Android Activity,Stack,Task,假设一个应用程序已经有一个活动堆栈,然后从应用程序上下文启动一个新的活动,并使用FLAG_activity_new_TASK。这在同一过程中发生,即在应用程序内部,如下所示: AppContext -> A(FLAG_ACTIVITY_NEW_TASK) -> B -> C; AppContext -> D(FLAG_ACTIVITY_NEW_TASK) 根据文件,我们现在有两项任务: Task 1: A, B, C; Task 2: D 根据文档,理论上用户可以单独

假设一个应用程序已经有一个活动堆栈,然后从应用程序上下文启动一个新的活动,并使用FLAG_activity_new_TASK。这在同一过程中发生,即在应用程序内部,如下所示:

AppContext -> A(FLAG_ACTIVITY_NEW_TASK) -> B -> C; AppContext -> D(FLAG_ACTIVITY_NEW_TASK)
根据文件,我们现在有两项任务:

Task 1: A, B, C; Task 2: D
根据文档,理论上用户可以单独切换到活动C或活动D,因为它们属于不同的任务。然而,实际上,我无法切换到活动C——它总是切换到D

我的问题是: 如果在与FLAG_ACTIVITY_NEW_TASK相同的流程中启动,任务不是独立的,用户只能切换到最顶层任务中最顶层的活动,这是真的吗

如果答案是“否”那么用户切换到任务1的方式是什么


更新 答案是:
任务是独立的,用户可以在各自的活动之间独立切换,有效地将应用程序的两个活动放在堆栈顶部。在提出最初的问题三年后,我刚刚找到了用例

我们的应用程序将自己注册为URL方案的处理程序(如
market://xxx.yyy/zzz
)。现在让我们想象一下,用户使用启动器启动应用程序,进入某个中间环节(活动
a、B、C
),然后停止。然后在浏览器中,用户单击一个URL,以便启动我们的其他活动(活动
D
)。这导致同时有两个任务:活动
A、B、C
(顶部为
C
)和活动
D
用户可以通过任务历史记录在这两个活动之间切换。

有趣的是,活动C在任务历史记录中使用应用程序自己的图标可见,而活动D使用浏览器图标可见。无论如何,两者都可以切换到


此外,两个任务
A-B-C
D
都在同一进程中运行。这意味着所有单音对象和静态数据在它们之间共享。因此,如果不小心,它们可能会破坏彼此的状态。

我认为没有办法切换向用户公开的任务(相对于应用程序)。通过启动相应的活动,可以切换到代码中的其他任务


编辑-可能是让用户切换没有启动程序的任务的最佳方式。

我问这个问题已经有一段时间了,我发现这个链接非常有用。它非常清楚地描述了所有标志和组合


我创建了一个参考项目来解决这个确切的用例:


Kumar,软件开发的艺术与任何艺术一样,不是复制他人的代码,而是从中获得灵感。