如何在没有调用onCreate()的情况下返回First活动

时间:2015-12-10 07:16:50

标签: android android-activity navigation

我有3项活动。活动A,活动B,活动C. 这是流程A-> B-> C. 现在我想从C。(即C-> A)来到活动A,而没有得到它被称为活动A的onCreate()。

到目前为止,我的代码是:但它将调用ActivityA的onCreate()。 我想调用Restart()。

Intent intent=new Intent(ActivityC.this,ActivityA.class);
                intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                startActivity(intent);
                finish(); 

4 个答案:

答案 0 :(得分:7)

两种情况:

  1. 如果您想要保持其他活动并且只想将A带到前面,只需使用意图标志FLAG_ACTIVITY_REORDER_TO_FRONT。

  2. 如果您不想清除所有活动并希望在顶部显示A的现有实例,请使用意图标记FLAG_ACTIVITY_CLEAR_TOP和FLAG_ACTIVITY_SINGLE_TOP。

  3. 注意:如果仅使用FLAG_ACTIVITY_CLEAR_TOP,则会调用onCreate。

答案 1 :(得分:4)

在活动声明

中将android:launchMode="singleTask"保留在清单中

允许使用singleTask launchMode的Activity在系统中只有一个实例 如果实例已经存在,我将不会打电话给'创建'它将调用“onNewIntent'方法。 有关启动模式的详细信息,请参阅http://androidsrc.net/android-activity-launch-mode-example/

答案 2 :(得分:2)

虽然将启动模式设置为singleTask将起作用,但不鼓励使用该启动模式。 documentation for launch mode表示singleTask是"不推荐用于一般用途"。

使用Intent标志FLAG_ACTIVITY_CLEAR_TOPFLAG_ACTIVITY_SINGLE_TOP

可以实现所需的行为
    Intent intent=new Intent(ActivityC.this,ActivityA.class);
    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
    startActivity(intent);
    finish();

活动A不会被重新创建,并将通过onNewIntent()收到意图。

答案 3 :(得分:0)

对活动A使用SingleTask启动模式。
新意图将传递给现有实例。