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

Keep calling activity and clear other activities before that

我正在按以下顺序调用活动 A>B>C>D,现在我想调用 Activity A 并清除 B 和 C 但保留 D。我正在调用 A Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP.但是除 A 之外的所有活动都被清除了。任何人都知道如何清除 B 和 C 并保持 D>A。

将此添加到 Class B、C 的清单中。

<activity
android:name=".AnyActivity"
android:noHistory="true" />

您可以通过在 D 中将 A 移动到顶部(从 D):

Intent intent = new Intent(this, A.class);
intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
startActivity(intent);

没有任何简单的标志可以用来摆脱 B 和 C。我建议您让 B 和 C 注册一个 BroadcastReceiver 来侦听特定的 ACTION。从 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));