我已经阅读了有关使用此功能的几篇文章,但一定会丢失一些东西,因为它对我不起作用。我的活动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(),但是后退按钮再次将我带回到浏览器!
@bitestar具有正确的解决方案,但还有一个步骤:
它已隐藏在文档中,但是你必须将的更改launchMode为以外的Activity任何其他值standard。否则,它将被销毁并重新创建,而不是重置到顶部。
launchMode
Activity
standard