1

如何从堆栈调用活动而不是启动新实例?这是一个场景:

  1. 使用参数调用活动 A 以检索数据
  2. 从 A 导航到 B
  3. 从 B 导航到 C
  4. 我想再次启动 A 但不使用新实例,我想从堆栈中获取它,因此无需传递参数并等待检索数据。
4

2 回答 2

1

如果我正确理解了您的观点,您可以简单地使用 退出您的活动 B 和finish();C。

因此,如果您 ActivityC 完成并且 ActivityB 也完成,则 ActivityA 应该出现在前面,这应该是您想要的。

于 2012-12-20T18:59:18.660 回答
0

尝试使用FLAG_ACTIVITY_REORDER_TO_FRONT。例如:

Intent intent = new Intent(BActivity.this, AActivity.class);     
intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
startActivity(intent);

来自 javadocs:

public static final int FLAG_ACTIVITY_REORDER_TO_FRONT
在 API 级别 3中添加

如果在传递给 Context.startActivity() 的 Intent 中设置,则此标志将导致已启动的活动被带到其任务历史堆栈的前面(如果它已经在运行)。

例如,考虑一个由四个活动组成的任务:A、B、C、D。如果 D 调用 startActivity() 的 Intent 解析为活动 B 的组件,则 B 将被带到历史堆栈的前面,结果顺序为:A、C、D、B。如果还指定了 FLAG_ACTIVITY_CLEAR_TOP,则此标志将被忽略。

于 2012-12-20T20:20:49.503 回答