继续调用 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));
我正在按以下顺序调用活动 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));