如何在Android中控制活动堆栈/清除活动堆栈

如何在Android中控制活动堆栈/清除活动堆栈,android,android-activity,android-manifest,Android,Android Activity,Android Manifest,我有一个如下的应用程序(主页是启动活动): 我的流程如下: 用户从Home启动活动A,该活动流向B和C。当用户离开活动C时,我希望A、B和C被销毁。也就是说,如果用户在活动D中按BACK,它将返回到Home 用户必须能够通过活动A、B和C正常控制程序流。因此,如果他们按下活动C中的后退按钮,则返回活动B 我已经查看了意图标志,例如CLEAR\u TOP和NEW\u TASK,但它们似乎都没有达到我想要的效果 我将感谢任何帮助 也许你在找什么?它需要API级别11,但:( 对于API级别您可能正在

我有一个如下的应用程序(主页是启动活动):

我的流程如下:

用户从
Home
启动活动
A
,该活动流向
B
C
。当用户离开活动
C
时,我希望
A
B
C
被销毁。也就是说,如果用户在活动
D
中按
BACK
,它将返回到
Home

用户必须能够通过活动
A
B
C
正常控制程序流。因此,如果他们按下活动
C
中的后退按钮,则返回活动
B

我已经查看了意图标志,例如
CLEAR\u TOP
NEW\u TASK
,但它们似乎都没有达到我想要的效果


我将感谢任何帮助

也许你在找什么?它需要API级别11,但:(


对于API级别您可能正在寻找?尽管它需要API级别11:(


对于API级别只需在活动D中单击后退按钮,在截取后退按钮后,前往主页活动。您可能/可能不想在前往主页活动时完成“D”活动。

只需在活动D中单击后退按钮,在截取后退按钮后,前往主页活动。您可以/ma我不想完成“D”活动,因为您正前往“主页”活动。

不幸的是,我正在为API 7+编程。不过,尝试得很好!好吧,既然该标志似乎满足了您的需求,我会得出结论,使用标志无法实现您的目标。不过,您可以通过一些有点难看的代码手动完成。例如,完成活动a、B当你启动D:)是的,但是除了创建一个静态数组(这将是可怕的内存方面)之外,我如何从D访问A,B,C?当从C启动时,完成C。确保C是用startActivityForResult()启动的,这样B:s方法在ActivityResult()上被触发。这样你就可以用同样的方式完成B,然后完成A:)这有点难看,但我看不到更好的选择。你自己喜欢这个常量名称KILL_-它得到了一个笑声。不幸的是,我正在为API 7+编程。不过,尝试得不错!好吧,既然那面旗子似乎能满足你的需要,我想得出结论,你不能用旗子得到你想要的东西。不过,您可以通过一些有点难看的代码手动完成。也就是说,在启动D:时用finish()完成活动A、B和C:)是的,但是除了创建静态数组(这将是可怕的内存方面)之外,我如何从D访问A、B、C?从C启动时,完成C。确保C是用startActivityForResult()启动的,以便触发ActivityResult()上的B:s方法。因此,你可以用同样的方式完成B,然后完成A:)这有点难看,但我看没有更好的选择。爱这个不变的名字,杀了你自己——它得到了一个笑声。
D
C
B
A
Home
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
@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        if(resultCode == KILL_YOURSELF) {
            setResult(KILL_YOURSELF);
            finish();
        }
    }