Android - 显示上次查看的活动按下时(主页按钮 - >应用程序快捷方式)

时间:2011-06-15 21:09:52

标签: java android android-activity launcher

我来做了一个永恒的问题,到目前为止还没有找到解决方案,我在互联网上搜索了同样的问题,但找到了解决这个问题的最终解决方案。

当我打开2个活动时,我拉出了主页按钮'然后按我的应用程序的快捷方式,它再次向我显示第一个活动(启动器活动),然后返回到显示的活动,我必须按后退按钮。

这个问题的解决方案是什么?

我想按下我的应用程序的快捷方式(通过按下主页按钮离开我的应用程序后)显示我显示的最后一个活动,而不是它显示我的第一个活动(活动启动器)。

提前致谢。

4 个答案:

答案 0 :(得分:0)

按主页按钮时,您的应用程序仍在后台运行。如果您想要返回,请按“主页”按钮时的finish()活动。

答案 1 :(得分:0)

这是预期的行为。启动器将使用过滤器android.intent.action.MAIN启动活动。

但是有很多方法可以解决这个问题。一个非常简单的方法是使用布尔标志mRunning,您将在启动时将其设置为true。如果true,则在onStart()方法上启动您的第二个Activity启动意图;如果为false,则继续setContentView()

如果您要回访几项活动,那么可行的方法是将当前活动保存在SharedPreferences中并以相同方式启动它。

或者,您的主要活动可能只是一个条目活动,其唯一的工作是开始使用的最后一个活动。

编辑:我发现这个重复的问题:How to make an android app return to the last open activity when relaunched?比我的要好得多。

答案 2 :(得分:0)

根据您的主要活动是由其他活动启动还是仅启动应用程序图标,您可以使用更简单的解决方案。如果您的主要活动仅由应用程序图标启动,则可以使用isTaskRoot()检查您的主要活动是否作为应用程序的重新启动启动,或者用户是否正在返回并且主要活动正在进行中在您希望显示的其他活动之上。

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    if (! isTaskRoot()) {
        finish();
    } else {
        ...
    }
}

答案 3 :(得分:0)

如果要打开另一个Activity,可以使用startActivityForResult替换startActivity。