从堆栈调用活动而不是启动新实例

时间:2012-12-20 18:56:38

标签: android android-activity stack

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

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

2 个答案:

答案 0 :(得分:1)

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

因此,如果ActivityC完成,还有ActivityB,ActivityA应该出现在前面,这应该是你想要的。

答案 1 :(得分: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调用具有解析为的Intent的startActivity()   活动B的组成部分,然后B将被带到前面   历史堆栈,使用此结果顺序:A,C,D,B。此标志将   如果还指定了FLAG_ACTIVITY_CLEAR_TOP,则忽略它。