我已经阅读了有关使用此功能的几篇文章,但一定会丢失一些东西,因为它对我不起作用。我的活动A在清单中有launchmode =“ singleTop”。它以launchmode =“ singleInstance”启动活动B。活动B打开浏览器并接收并返回意图,这就是为什么它是singleInstance的原因。我试图覆盖“后退”按钮,以便将用户发送回活动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,Browser,B
我希望此代码将堆栈更改为... A ...,以便再次按回可将用户带回到主屏幕。
相反,似乎将堆栈更改为... A,B,Browser,B,A ...,好像这些标志不存在。
我尝试在startActivity之后在活动B中调用finish(),但是后退按钮再次将我带回到浏览器!
我想念什么?谢谢!
Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP
会做到这一点。