我试图使用FLAG_ACTIVITY_CLEAR_TOP
,但我发现它与我的情况略有不同。
在我的项目中,有三个活动,A,B,C。
它像A - >一样移动; B - > C并且当创建活动C时,活动A和B被销毁。我应该使用FLAG_ACTIVITY_CLEAR_TOP
还是其他api?
感谢。
答案 0 :(得分:1)
如果您想在开始A
活动时完成B
和C
活动,那么要用于启动C
活动,请添加以下标记:
cActivityIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
cActivityIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
答案 1 :(得分:1)
我会使用"调度员"机制。当B
想要启动C
时,它应该告诉A
这样做:
Intent intent = new Intent(this, A.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.putExtra("startC", true);
// If B needs to pass additional parameters to C via A add them here
intent.putExtra("key1", value1);
intent.putExtra("key2", value2);
...
startActivity(intent);
这将完成B
和A
,创建A
的新实例,并在onCreate()
的新实例上调用A
。在onCreate()
的{{1}}中,执行以下操作:
A
这将导致super.onCreate(...);
Intent intent = getIntent();
if (intent.hasExtra("startC")) {
// Need to start C
intent.setClass(this, C.class);
startActivity(intent);
finish();
return;
}
启动A
并完成自己。 C
中的任何额外内容都会传递给Intent
。