继续致电活动并清除其他活动

问题描述:

我按以下顺序呼叫活动A> B> C> D,现在我想打电话给活动A并清除B和C但保留D.我打电话A与Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP 。但除A之外的所有活动都已获得批准。任何人都知道如何清除B和C并保持D> A。继续致电活动并清除其他活动

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

有没有:在d这样在你的清单

+0

你不能只是调用finish在B和C,如果你不需要他们了吗? – joe

+0

我需要它,直到我打电话给D从D – Aju

+0

https://developer.android.com/reference/android/content/Intent.html尝试阅读这些标志的含义,您可能会弄清楚何时使用哪一个 – joe

您可以将移动到顶部(从d)任何简单的标志,你可以用来摆脱B和C.我建议你有B和C注册一个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,发送广播Intent含ACTION_EXIT使B和C完成,像这样:

sendBroadcast(new Intent(ACTION_EXIT)); 

添加此为B类,C

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