继续致电活动并清除其他活动
问题描述:
我按以下顺序呼叫活动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这样在你的清单
答
您可以将移动到顶部(从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" />
你不能只是调用finish在B和C,如果你不需要他们了吗? – joe
我需要它,直到我打电话给D从D – Aju
https://developer.android.com/reference/android/content/Intent.html尝试阅读这些标志的含义,您可能会弄清楚何时使用哪一个 – joe