在此之前保持呼叫活动并清除其他活动

时间:2017-07-24 12:00:34

标签: android android-intent android-activity back-stack taskstackbuilder

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

2 个答案:

答案 0 :(得分: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注册一个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));

答案 1 :(得分:-2)

在您的清单中为B类,C。

添加此项
class Foo {
    static int classGlobal = 6*7;
}