我按以下顺序调用活动 A>B>C>D,现在我想调用活动 A 并清除 B 和 C,但保留 D。我用Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP
打电话给A.但是除了A之外的所有活动都被清除了。任何机构都知道如何清除B和C并保持D>A。
您可以通过在 D 中执行此操作将 A 移动到顶部(从 D(:
Intent intent = new Intent(this, A.class);
intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
startActivity(intent);
没有任何简单的标志可以用来摆脱B和C。我建议你让 B 和 C 注册一个侦听特定 ACTION 的BroadcastReceiver
。从 D 启动 A 后,可以发送一个广播Intent
,该广播将导致 B 和 C 自行完成。例如,在 B 和 C 中这样做:
// Declare receiver as member variable
BroadcastReceiver exitReceiver = new BroadcastReceiver() {
@Override
void onReceive (Context context, Intent intent) {
// This Activity is no longer needed, finish it
finish();
}
}
在onCreate()
注册接收器:
registerReceiver(exitReceiver, new IntentFilter(ACTION_EXIT));
不要忘记在onDestroy()
中取消注册接收器!
在 D 中,当您启动 A 时,发送一个包含 ACTION_EXIT 的广播Intent
以使 B 和 C 完成,如下所示:
sendBroadcast(new Intent(ACTION_EXIT));
将其添加到类 B、C 的清单中。
<activity
android:name=".AnyActivity"
android:noHistory="true" />