我有一系列的活动 A、B、C,完成后需要将新的活动 Y 推送到我的主屏幕。任务栈应该如下所示:
谢谢。
- H
- H->A
- H->A->B
- H->A->B->C
- H->Y
谢谢。
你可以使用标志 FLAG_ACTIVITY_CLEAR_TOP
启动一个活动 H
,这将调用活动 H 的 onNewIntent()
方法。你可以在此意图中设置适当的额外信息,并使用它们启动 Activity Y
。
Jamie,你现在开始搞Android了?这可真是个可怕的想法!无论如何,finish()
是从栈中移除活动时的好帮手。您可以多次调用它以从堆栈中弹出多个活动。
或者,您也可以通过在意图中传递FLAG_ACTIVITY_CLEAR_TOP标志来清除整个堆栈(但是听起来您想保留H,因此可能不是一个明智的选择)。
顺便说一句,我还没有尝试过FLAG_ACTIVITY_NEW_TASK,但这在您的情况下可能有效。在启动A
之前通过它传递。这在您的情况下可能完全没有用处,所以请试验一下吧。
编辑:我稍微尝试了一下,多次调用finish()实际上并不能按预期工作。我通过使用FLAG_ACTIVITY_CLEAR_TOP启动H
,然后立即随后启动Y
(即在一个函数中两个startActivity
调用)使其起作用。