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

时间:2017-06-02 13:46:10

标签: android android-activity

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

但是我希望用户总是回到最后一个主屏幕上"返回"在退出应用程序之前按下。

示例

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

现在返回堆栈:主页| A1 | A1b

用户选择其他项目A2

现在返回堆栈:主页| A2。

为此,我在考虑使用Tasks,并在启动新Activity时为intent设置适当的标志。但它没有用。

我该如何实现呢?

3 个答案:

答案 0 :(得分:0)

你设置了什么旗帜?

为后退按钮创建一个方法并将其放入其中:

options.url = encodeUrl(options.url);

答案 1 :(得分:0)

添加"完成();"在所有chield活动的onStop(){}内。

喜欢:

   @Override
   protected void onStop() {

    super.onStop();
    finish();

}

答案 2 :(得分:0)

修改

不起作用,因为应用程序在“最近的”应用程序中出现两次。

原始邮寄

我感谢this article找到了解决方案。

家庭活动应该是一项任务。

在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正常启动Activity A1,没有任何特定标志。 A1发射A1b也是如此。 当我们想要启动A2时,我们清除当前任务:

intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);

由于HomeActivity属于他自己的任务(感谢“singleInstance”启动模式(see doc)),因此它不受影响并且仍然存在。所以现在推出A2,A1和A1b消失了。如果我按“返回”,则显示主页活动。