Android:FLAG_ACTIVITY_NEW_TASK在同一个过程中有效吗?

假设应用程序已经有一堆活动,然后从应用程序上下文中用FLAG_ACTIVITY_NEW_TASK启动新的活动。 这发生在相同的过程中,即在应用程序内,像这样:

AppContext -> A(FLAG_ACTIVITY_NEW_TASK) -> B -> C; AppContext -> D(FLAG_ACTIVITY_NEW_TASK) 

根据文档,我们现在有2个任务

 Task 1: A, B, C; Task 2: D 

从文档来看,理论上用户可以独立地切换到活动C或活动D,因为它们属于不同的任务。 然而,在实践中,我无法切换到活动C–它总是转向D.

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

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


UPDATE

答案是:
这些任务独立的,用户可以独立地在他们的活动之间切换,有效地在您的应用程序的顶部有两个活动。 我刚刚在提出原始问题三年后才find用例。

我们的应用将自己注册为URLscheme的处理程序(如market://xxx.yyy/zzz )。 现在让我们想象一下,用户使用启动器启动了应用程序,进入了某个东西(活动A, B, C )的中间,然后离开了。 然后在浏览器中用户点击一个URL,以便我们启动其他活动(活动D )。 这导致在同一时间有两个任务:活动A, B, CC上面)和活动D 用户可以通过任务历史在这两个活动之间切换。

有趣的是,活动C在任务历史中可以看到应用程序自己的图标,但活动D可以通过浏览器的图标看到。 无论如何,都可以切换到。

而且, ABCD这两个任务都在相同的过程中运行。 这意味着所有的singletone对象和静态数据在它们之间共享。 因此,如果不采取谨慎的态度,他们可能会腐败对方的国家。

Solutions Collecting From Web of "Android:FLAG_ACTIVITY_NEW_TASK在同一个过程中有效吗?"

当我遇到这个我认为非常有用的链接时,我已经提出了这个问题。 它非常清楚地描述了所有的标志和组合。

http://blog.akquinet.de/2010/04/15/android-activites-and-tasks-series-intent-flags/

我不认为有办法切换暴露给用户的任务(与应用程序)。 您可以通过启动适当的活动来切换到代码中的其他任务。

编辑 – 通知可能是让用户切换没有启动器的任务的最佳方式。

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

https://github.com/theelfismike/android-parallel-paths