说我有3个活动A,B和C. A导致B导致C.我希望能够在A和B之间来回移动但是我想在C得到A和B后完成开始。我理解如何通过意图启动C时关闭B但是如何在C启动时关闭A?
答案 0 :(得分:1)
打开C活动时使用此标志。
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
这将清除C之上的所有活动。
答案 1 :(得分:0)
由于A
是您的根(开始)活动,因此请考虑使用A
作为调度程序。如果您想要启动C
并在之前(下)完成所有其他活动,请执行以下操作:
// Launch ActivityA (our dispatcher)
Intent intent = new Intent(this, ActivityA.class);
// Setting CLEAR_TOP ensures that all other activities on top of ActivityA will be finished
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
// Add an extra telling ActivityA that it should launch ActivityC
intent.putExtra("startActivityC", true);
startActivity(intent);
ActivityA.onCreate()
中的执行此操作:
super.onCreate();
Intent intent = getIntent();
if (intent.hasExtra("startActivityC")) {
// Need to start ActivityC from here
startActivity(new Intent(this, ActivityC.class));
// Finish this activity so C is the only one in the task
finish();
// Return so no further code gets executed in onCreate()
return;
}
这里的想法是您使用FLAG_ACTIVITY_CLEAR_TOP
启动ActivityA(您的调度程序),以便它是任务中唯一的活动,并告诉它您希望它启动哪些活动。然后它将启动该活动并完成自己。这将使您只在堆栈中使用ActivityC。