我已经阅读了几篇关于使用这个的文章,但是一定遗漏了什么,因为它对我不起作用。我的活动 A 在清单中有 launchmode = “ singleTop”。它以 launchmode = “ singleInstance”启动活动 B。活动 B 打开一个浏览器并接收一个返回的意图,这就是为什么它是 singleInstance 的原因。我试图覆盖后退按钮,这样用户就会被发送回活动 A,然后可以按 Back 退出活动,而不是再次返回活动 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,Browser,B
我希望这段代码能将堆栈改为..。 A 这样再按一次就可以把用户带回主屏幕。
相反,它似乎将堆栈改为..。 A,B,Browser,B,A 就好像那些旗子不存在一样。
我尝试在 startActivity 之后调用 activity B 中的 Finish () ,但是后退按钮又把我带回了浏览器!
我错过了什么?