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

Posted

技术标签:

【中文标题】Android - 按下时显示上次查看的活动(主页按钮 - >应用程序快捷方式)【英文标题】:Android - Show last viewed Activity When press (Home Button-->App Shortcut) 【发布时间】:2011-09-15 21:42:20 【问题描述】:

我是来做永恒的问题的,至今没有找到解决办法,我在网上搜索了同样的问题,但找到了这个问题的最终解决方案。

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

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

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

提前致谢。

【问题讨论】:

How to make an android app return to the last open activity when relaunched?的可能重复 【参考方案1】:

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

不过,有一些方法可以解决它。一个非常简单的方法是有一个布尔标志mRunning,您将在启动时将其设置为true。如果true,那么在onStart() 方法上,你开始一个意图来启动你的第二个Activity;如果为假,则继续使用setContentView()

如果您有多个活动要返回,那么一种可行的方法是将当前活动保存在SharedPreferences 中并以相同的方式启动它。

或者,您的主 Activity 可能只是一个入口 Activity,其唯一工作是启动最后使用的 Activity。

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

【讨论】:

感谢“Aleadam”,您传递给我的链接是问题的解决方案。我已经实施并且工作完美。【参考方案2】:

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

【讨论】:

我不明白,我想按下我的应用程序的快捷方式(在按下主页按钮离开我的应用程序之后)显示最后一个活动显示,而不是显示第一个活动(活动启动器)。 哦,对不起,我误解了。然后,您的应用程序可能已被杀死以获取内存。您可以做的是为应用程序创建一个共享首选项,并且每次活动更改时都会更新首选项。然后,当应用程序重新启动时,检查首选项并直接跳到所需的活动。【参考方案3】:

根据您的主要活动是由另一个活动启动还是仅由应用程序图标启动,您可以使用更简单的解决方案。如果您的主要活动仅由应用程序图标启动,您可以使用isTaskRoot() 来检查您的主要活动是否作为应用程序的全新启动启动,或者用户是否正在返回并且主要活动是否被放置在顶部您希望显示的其他活动。

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

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

【讨论】:

【参考方案4】:

当您想打开另一个 Activity 时,您可以使用 startActivityForResult 替换 startActivity。

【讨论】:

以上是关于Android - 按下时显示上次查看的活动(主页按钮 - >应用程序快捷方式)的主要内容,如果未能解决你的问题,请参考以下文章

Android nougat 状态栏在启动活动时显示白色

当应用程序进入后台android时显示启动画面

Bootstrap 4:在导航栏折叠时显示活动导航项

防止键盘在活动开始时显示

使用 Action.SEND 从另一个应用程序接收到隐式意图时显示错误的活动

Android:返回导航到尚未调用的活动