我有一个应用程序,如下所示(主页是启动活动(:
D
C
B
A
Home
我的流程如下:
用户从 Home
启动活动A
,该活动流向 B
并C
。 当用户离开活动C
时,我希望销毁A
、B
和C
。 也就是说,如果用户在活动D
中按BACK
,它将返回到Home
。
用户必须能够通过活动A
、B
和C
正常控制程序流。 因此,如果他们按下活动C
中的后退按钮,它将返回到活动B
。
我查看了 Intent 标志,例如 CLEAR_TOP
和 NEW_TASK
,但它们似乎都没有做我想要它们做的事情。
我将不胜感激任何帮助!
也许你正在寻找FLAG_ACTIVITY_TASK_ON_HOME
?它需要 API 级别 11 :(
对于 API 级别 <11,可以执行以下操作:
启动活动 B 和 C 时,请使用 startActivityForResult((。启动活动 D 时,请执行以下操作:
startActivity(D);
setResult(KILL_YOURSELF); //KILL_YOURSELF is some arbitrary int that you use to identify that the other activities should exit
finish(); //finish the activity
这将终止活动 C。然后在活动 A 和 B 中,覆盖 onActivityResult,如下所示:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(resultCode == KILL_YOURSELF) {
setResult(KILL_YOURSELF);
finish();
}
}
因此,活动 B 将完成,这反过来又会在 A 中触发 onActivityResult,因此它也将完成。
只需拦截活动 D 中的后退按钮,拦截后退按钮后,转到主页活动。您可能/可能不想在前往家庭活动时完成"D"活动。