gpt4 book ai didi

Android:FLAG_ACTIVITY_NEW_TASK 在同一个进程中有影响吗?

转载 作者:塔克拉玛干 更新时间:2023-11-02 18:51:30 25 4
gpt4 key购买 nike

假设一个应用程序已经有一堆 Activity ,然后一个新的 Activity 从带有 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

从文档中可以看出,理论上用户可以独立切换到 Activity C 或 Activity D,因为它们属于不同的任务。然而,在实践中,我无法切换到 Activity C - 它总是切换到 D。

我的问题是:如果在同一个进程中启动FLAG_ACTIVITY_NEW_TASK,任务是不是独立的,用户只能切换到最顶层任务中的最顶层 Activity ,这是真的吗?

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


更新

答案是:
任务独立的,用户可以独立地在他们的 Activity 之间切换,有效地让你的应用程序的两个 Activity 位于堆栈的顶部。在提出原始问题三年后,我才找到用例。

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

有趣的是,Activity C 在任务历史记录中可见,并带有应用程序自己的图标,而 Activity D 则在浏览器图标中可见。不管怎样,两者都可以切换。

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

最佳答案

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

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

关于Android:FLAG_ACTIVITY_NEW_TASK 在同一个进程中有影响吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5236168/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com