我的应用程序如下(Home是启动活动):
D
C
B
A
Home
我的流程如下:
用户从A
开始Home
活动,该活动流向B
和C
。当用户离开活动C
时,我希望销毁A
,B
和C
。也就是说,如果用户在活动BACK
中按D
,则会返回Home
。
用户必须能够通过活动A
,B
和C
正常控制计划流程。因此,如果他们按下活动C
中的后退按钮,则会返回活动B
。
我查看了CLEAR_TOP
和NEW_TASK
等意图标记,但似乎没有一个像我想要的那样。
我很感激任何帮助!
答案 0 :(得分:4)
也许您正在寻找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,所以它也将完成。
答案 1 :(得分:0)
只需intercept活动D中的后退按钮,并在拦截后退按钮时,转到主页活动。当您前往家庭活动时,您可能/可能不想完成'D'活动。