0

我在 Android 应用程序上有以下一系列活动:

A -> B -> C

Intent.FLAG_ACTIVITY_CLEAR_TOP在 C 上,我可以使用带有和Intent.FLAG_ACTIVITY_SINGLE_TOP意图标志的 startActivity 回家(“A”) 。这清除了活动 B 和 C 的堆栈,所以它只是 A。到目前为止还不错;这相当于我的“家”。

但是,我还有另一个部分 - “E” - 我希望它清除除home(“A”)之外的整个堆栈。如:

Activity stack: A -> B -> C
(User clicks on "E" button)
Activity stack result: A -> E

Intent.FLAG_ACTIVITY_NEW_TASK在打开小节(“B”、“E”等)时尝试过使用,但似乎无法清除之前的任务。我也试过Intent.FLAG_ACTIVITY_TASK_ON_HOME,但它似乎没有做任何事情(你怎么设置什么是“家”呢?)。

是否可以?

4

1 回答 1

1

一个不太复杂的解决方案是在Intent您传递给ActivityA 的“透明顶部”中添加一个额外的内容。根据该信息,您可以在ActivityA 收到新的Intent.

例如。您可以设置一系列“命令”,您在收到 A 时识别这些“命令”,Intent然后Activity根据这些“命令”做某事;即开始ActivityE。

或者,由于 andIntent是可打包的,您可以将以EIntent开头Activity的作为额外内容附加到Intent您发送给ActivityA 的“透明顶部”。您可以简单地检查是否存在“转发意图”并调用,而不是识别命令startActivity(forwardedIntent)

在所有这些情况下,清除顶部标志将导致 B 和 C 被弹出,留下 A。Activity然后 A 将负责启动 E。流程应该足够快,不会导致任何视觉闪烁,例如从A 在EActivity之前短暂显示Activity接手。

我不确定你所追求的行为是否对用户有意义,但我会留给你。

于 2012-11-09T02:09:53.637 回答