FLAG_ACTIVITY_CLEAR_TASK是如何工作的?

7

我对使用FLAG_ACTIVITY_CLEAR_TASKFLAG_ACTIVITY_NEW_TASK的组合非常困惑。难道FLAG_ACTIVITY_CLEAR_TASK不应该只清除目标任务而不是调用者任务吗?

假设我有以下导航:

A -> B -> C 

BFLAG_ACTIVITY_NEW_TASKFLAG_ACTIVITY_CLEAR_TASK调用C时,这将如何清除栈中的AB?我知道这是发生了,因为我测试过(如果我在C上点击返回,我就离开了应用程序),但我不完全明白原因...AB是不属于将创建C的任务的不同任务的一部分。 FLAG_ACTIVITY_CLEAR_TASK 如果在传递给Context.startActivity()的Intent中设置了此标志,则在启动Activity之前,将清除与该Activity关联的任何现有任务。也许上面加粗的文字意味着调用者和目标任务被清除。我不确定"associated"会是什么意思。

你为什么认为A、B和C是不同的任务? - The Dreams Wind
这个链接可能会有帮助:https://teamtreehouse.com/community/why-use-flagactivitycleartask-when-using-flagactivitynewtask-from-navigation-with-back-and-up-video - stdout
2个回答

2

FLAG_ACTIVITY_CLEAR_TASK 可以通过启动新的活动来清除所有现有任务,在您的情况下是 C

我认为您需要 FLAG_ACTIVITY_CLEAR_TOP,它只会清除堆栈中的顶部活动,在您的情况下是 B

您可能对其他标志感兴趣,请在此处查看


0

FLAG_ACTIVITY_CLEAR_TASK 只能与 FLAG_ACTIVITY_NEW_TASK 一起使用,它不会创建新的任务。当前任务中的所有活动都将被结束,新的活动(在您的情况下为 C)成为该任务的根。

在您的情况下,FLAG_ACTIVITY_CLEAR_TOPFLAG_ACTIVITY_NEW_TASK 一起使用将创建一个新任务,并使 C 成为该任务的根。

您可以在此处了解有关 FLAG_ACTIVITY_CLEAR_TASKFLAG_ACTIVITY_CLEAR_TOP 如何工作的更多信息。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接