我对活动启动模式非常困惑。这是场景。
活动A - 具有singleTask启动模式的main,启动器 活动B - singleTask启动模式 活动C - 标准启动模式
现在我正在做的事情
活动A>活动B>活动C
我按下主页按钮。我从最近的应用程序恢复应用程序。实际发生的是
活动A
但我已阅读文档,恢复后应该是这样的
活动A>活动B
或者我错过了什么?
答案 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
的任务。
这就是为什么你不应该使用特殊的启动模式singleTask
或singleInstance
,因为它们会做很多你不期望的事情。如果你忽略了这个建议并且仍然使用这些启动模式,你必须知道taskAffinity
如何影响活动在各种任务中的启动方式,你还需要知道你可能最终会遇到多个任务,在这种情况下,您需要为用户提供一种从最近任务列表返回正确任务的方法。这也意味着您可能需要为任务提供不同的标签和/或任务的不同图标,以帮助用户找到要恢复的正确任务。