我对活动启动模式感到非常困惑。这是场景。
活动A-主,具有singleTask启动模式的启动器
活动B-singleTask启动模式
活动C-标准启动模式
现在这是我在做什么
活动A>活动B>活动C
然后按主页按钮。我从最近的应用程序中恢复了该应用程序。实际发生的是
活动A
但是我已经阅读了文档,恢复后应该是这样的
活动A>活动B
还是我错过了什么?
最佳答案
好吧,很大程度上取决于您如何为清单中的各种活动设置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
如何影响将活动启动到各种任务中的方式,并且还需要知道您可能会结束多个任务,在这种情况下您需要为用户提供一种从最近任务列表中返回正确任务的方法。这也意味着您可能需要为任务提供不同的标签和/或为任务提供不同的图标,以帮助用户找到要恢复的正确任务。