Activity A -> Activity B -> Activity C -> Activity D
。在活动D中按回来应该将用户导出应用程序,而Back应该对活动C,B和A正常工作,即C -> back -> B -> back A -> back -> exit
。
我尝试使用不同组合的Activity.FLAG_ACITIVITY_CLEAR_TOP,
等设置标志。似乎没什么用。最低API级别7。
答案 0 :(得分:2)
#1 Pressing back in Activity D should navigate user out of the application
在ActivityD中,您可以覆盖onBackPressed或onKeyDown方法,然后使用带有Exit标志的标志FLAG_ACTIVITY_CLEAR_TOP启动ActivityA(通过putExtra方法)。在ActivityA中,如果Exit标志设置为true,则可以获取Exit标志值并调用finish()。
在活动A的onCreate方法中,您需要做的是
if (getIntent().getBooleanExtra("EXIT", false)) {
finish();
}
在ActivityD的onBackPressed或onKeyPressed方法中,
intent = (this, ActivityA.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.putExtra("EXIT", true);
startActivity(intent);
#2 Exit from ActivityA
您只需在onBackPressed或onKeyPressed上调用finish()方法即可。
答案 1 :(得分:0)
Android活动存储在活动堆栈中。回到以前的活动可能意味着两件事。
您使用startActivityForResult从另一个活动中打开了新活动。在这种情况下,您只需从代码中调用finishActivity()函数,它就会将您带回到之前的活动。
跟踪活动堆栈。每当您使用intent启动新活动时,您都可以指定一个意图标记,如FLAG_ACTIVITY_REORDER_TO_FRONT或FLAG_ACTIVITY_PREVIOUS_IS_TOP。您可以使用它在应用程序中的活动之间进行随机播放。虽然没有多用它们。看看旗帜here
答案 2 :(得分:0)
您是否尝试覆盖活动D中BACK按钮的功能?我非常确定这与您的需求非常相关:Override back button to act like home button
了解Android活动生命周期。
答案 3 :(得分:0)
“在活动D中按回来应该将用户导出应用程序”
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
moveTaskToBack(true);
return true;
}
return super.onKeyDown(keyCode, event);
}
这是操作系统的正常行为,您无需为此做任何特殊操作。
答案 4 :(得分:-1)
在启动其他活动之前,只需在您的活动中调用finish方法。
this.finish();
startActivity(new_activity_intent);