我有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();
答案 0 :(得分:7)
两种情况:
如果您想要保持其他活动并且只想将A带到前面,只需使用意图标志FLAG_ACTIVITY_REORDER_TO_FRONT。
如果您不想清除所有活动并希望在顶部显示A的现有实例,请使用意图标记FLAG_ACTIVITY_CLEAR_TOP和FLAG_ACTIVITY_SINGLE_TOP。
注意:如果仅使用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_TOP
和FLAG_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启动模式。
新意图将传递给现有实例。