0

如果我有一个 Activity A 启动 Activity B,它启动了 Activity A 的不同实例,我想回到前一个 Activity A(后堆栈中的第一个),所以我尝试使用意图标志 FLAG_ACTIVITY_CLEAR_TOP ,但当然这会将顶级活动识别为正在运行的实例,而不是第一个。如何摆脱活动 A 和活动 B 的第二个实例以恢复我的会话回到第一个活动 A?

A - > B - > A - > 回到第一个 A 并完成第二个 A & B。

我的目标是 API 级别 10。

4

3 回答 3

1

试试这些标志:

addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK );

来自FLAG_ACTIVITY_CLEAR_TASK的文档:

...此标志将导致在活动开始之前清除与活动相关联的任何现有任务。也就是说,该活动成为一个空任务的新根,并且任何旧活动都已完成。这只能与 FLAG_ACTIVITY_NEW_TASK 结合使用。

请注意,它不仅会清除活动,还会创建一个全新的任务。例如,如果活动 A 不是您的“家庭”活动,这可能并不理想。

于 2013-08-06T22:20:24.713 回答
1

您可以尝试在活动 B 启动活动 A 的第二个实例时设置 FLAG_ACTIVITY_NO_HISTORY。不能保证,但它可能会起作用。

当然,如果活动 B 正在合作,您可以从 A 的第二个实例返回一个 B 可以识别并立即完成()本身的状态。但是,如果您有 A->B->CA,那并不能真正解决问题。

于 2013-08-06T22:04:04.107 回答
0

您可以通过设置标志 FLAG_ACTIVITY_SINGLE_TOP 来尝试。否则,您将需要自己监控您的活动,并在需要时前往需要的地方。

于 2013-08-06T22:08:02.653 回答