使用singleTask进行多项活动

时间:2017-06-14 16:55:43

标签: android android-activity activity-stack launchmode

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

活动A - 具有singleTask启动模式的main,启动器 活动B - singleTask启动模式 活动C - 标准启动模式

现在我正在做的事情

活动A>活动B>活动C

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

活动A

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

活动A>活动B

或者我错过了什么?

1 个答案:

答案 0 :(得分:2)

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

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

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

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