1

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

4

2 回答 2

2

您可以通过在 D 中执行以下操作将 A 移到顶部(从 D):

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

没有任何简单的标志可以用来摆脱 B 和 C。我建议你让 B 和 C 注册 aBroadcastReceiver来监听特定的 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 时,发送一个Intent包含 ACTION_EXIT 的广播以使 B 和 C 完成,如下所示:

sendBroadcast(new Intent(ACTION_EXIT));
于 2017-07-24T13:57:11.640 回答
-2

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

<activity
android:name=".AnyActivity"
android:noHistory="true" />
于 2017-07-24T12:25:58.247 回答