如何使用Intent.FLAG_ACTIVITY_CLEAR_TOP清除活动堆栈?
2022-08-31 11:27:39
我已经阅读了几篇关于使用它的帖子,但必须缺少一些东西,因为它对我不起作用。我的活动 A 在清单中具有 launchmode=“singleTop”。它启动活动 B,启动模式 =“单实例”。活动 B 打开浏览器并接收回意图,这就是它是单实例的原因。我正在尝试覆盖后退按钮,以便将用户发送回活动 A,然后可以按“后退”离开活动,而不是再次返回到活动 B。
// activity B
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.ECLAIR
&& keyCode == KeyEvent.KEYCODE_BACK
&& event.getRepeatCount() == 0) onBackPressed();
return super.onKeyDown(keyCode, event);
}
@Override
public void onBackPressed() {
startActivity(new Intent(this, UI.class)
.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK));
return;
}
从浏览器返回后,堆栈是...A,B,浏览器,B
我希望此代码将堆栈更改为...一个。。。因此,再次按后退会将用户带回主屏幕。
相反,它似乎将堆栈更改为...A,B,浏览器,B,A ...好像那些标志不在那里。
我尝试在启动活动后在活动B中调用finish(),但随后后退按钮再次将我带回浏览器!
我错过了什么?