Android 退出应用程序前始终显示主屏幕

Android 退出应用程序前始终显示主屏幕,android,android-activity,Android,Android Activity,我有一个主屏幕和一个滑动菜单。 当应用程序启动时,将显示主屏幕。 如果打开菜单并单击项目,将启动一个新活动(A1)。此新活动A1可以启动活动A1b。在这种情况下,如果用户按下后退按钮,他应该返回A1。 如果您选择菜单上的另一项,我希望A1和A1b从后堆栈中删除 但我希望用户在退出应用程序之前,在最后一次按下“后退”按钮时始终返回主屏幕 示例 从主页开始,用户在菜单上选择A1,然后按A1上的按钮转到A1b 后堆栈现在是:Home | A1 | A1b 用户选择其他项目A2 后堆栈现在是:Home

我有一个主屏幕和一个滑动菜单。 当应用程序启动时,将显示主屏幕。 如果打开菜单并单击项目,将启动一个新活动(A1)。此新活动A1可以启动活动A1b。在这种情况下,如果用户按下后退按钮,他应该返回A1。 如果您选择菜单上的另一项,我希望A1和A1b从后堆栈中删除

但我希望用户在退出应用程序之前,在最后一次按下“后退”按钮时始终返回主屏幕

示例

从主页开始,用户在菜单上选择A1,然后按A1上的按钮转到A1b

后堆栈现在是:Home | A1 | A1b

用户选择其他项目A2

后堆栈现在是:Home | A2

为此,我考虑使用任务,并在启动新活动时为意图设置适当的标志。但它不起作用


我应该如何实现这一点?

您设置了哪些标志

创建“后退”按钮的方法并将其放入其中:

    Intent intent = new Intent(Intent.ACTION_MAIN);
    intent.addCategory(Intent.CATEGORY_HOME);
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
    startActivity(intent);
在所有chield活动的onStop(){}中添加“finish();”

比如:

   @Override
   protected void onStop() {

    super.onStop();
    finish();

}
编辑 不工作,因为应用程序在“最近”应用程序中出现两次


原职 多亏了你,我找到了解决办法

家庭活动应该是一项单独的任务

AndroidManifest中的

<activity
    android:name=".HomeActivity"
    android:launchMode="singleInstance">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />

        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

由于HomeActivity在其自己的任务中(由于“singleInstance”启动模式()),因此它不会受到影响,并且仍然存在。现在A2发射了,A1和A1b都消失了。如果我按“后退”键,将显示主页活动。

我希望自动管理逻辑,而无需覆盖后退方法。也许我还不了解它是如何工作的,但我在想,在任务中加入Home活动,然后用活动A1创建一个新任务(flag Intent.flag_activity_new_task)。对我来说,家在Task0中,A1在Task1中。然后我启动A1b时没有特定的标志(因此它也应该在Task1中)。当我启动A2时,我想用Intent.FLAG\u ACTIVITY\u CLEAR\u任务清除Task1,这样带Home的Task0会保留,而现在Task1只有A2。因此,如果我按back,我应该回到家里。不要认为这是一个好主意,因为如果应用程序在后台(如果用户在应用程序之间切换),活动将被终止
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);