在此之前,继续调用活动并清除其他活动



我按以下顺序调用活动 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" />

相关内容

最新更新