singleTask 的多个活动

Posted

技术标签:

【中文标题】singleTask 的多个活动【英文标题】:Multiple activities with singleTask 【发布时间】:2017-11-16 22:47:48 【问题描述】:

我对活动启动模式感到非常困惑。这是场景。

Activity A - 主启动器,具有 singleTask 启动模式 Activity B - singleTask 启动模式 Activity C - 标准启动模式

这就是我正在做的事情

活动 A > 活动 B > 活动 C

然后我按下主页按钮。我从最近的应用程序中恢复应用程序。实际发生的是

活动 A

但是我已经阅读了文档,恢复后应该是这样的

活动 A > 活动 B

或者我错过了什么?

【问题讨论】:

【参考方案1】:

嗯,很大程度上取决于您如何为清单中的各种活动设置taskAffinity

假设您已对其进行了配置,以便活动 A 和活动 B 具有不同的 taskAffinity(这是您应该配置的方式)。当您启动应用程序时,android 会创建一个包含A 的新任务。当您从A 启动B 时,Android 应该创建另一个仅包含B 的新任务。包含A 的任务被发送到后台。您现在应该有 2 个任务,一个只包含 A,另一个只包含 B。当您从B 启动C 时,第二个任务现在应该包含B->C。当你按下 HOME 键时,第二个任务被发送到后台。

现在,当您查看最近的任务列表时,您实际上应该会看到您的应用有 2 个任务。根据您选择的任务,您将获得仅包含A 的任务或包含B->C 的任务。

这就是为什么你不应该使用特殊的启动模式singleTasksingleInstance,因为它们会做很多你意想不到的事情。如果您忽略此建议并仍然使用这些启动模式,您必须了解taskAffinity 如何影响将活动启动到各种任务中的方式,并且您还需要注意您最终可能会执行多个任务,在这种情况下您需要为用户提供一种从最近任务列表中返回到正确任务的方法。这也意味着您可能需要为任务提供不同的标签和/或为任务提供不同的图标,以帮助用户找到要恢复的正确任务。

【讨论】:

以上是关于singleTask 的多个活动的主要内容,如果未能解决你的问题,请参考以下文章

singleTask 启动模式不起作用

Android:恢复 singleTask 活动

替换 SingleTask 活动中的片段

android singleTask 活动不作为根?

使用“singleTask”作为启动模式时无法完全关闭活动

SingleTask 活动在同一个进程中多次创建