gpt4 book ai didi

android - 应用程序重新启动而不是恢复

转载 作者:IT老高 更新时间:2023-10-28 12:55:00 24 4
gpt4 key购买 nike

希望有人能帮我弄清楚,如果不是解决方案,至少是对行为的解释。

问题:

在某些设备上,按下启动器图标会导致当前任务被恢复,在其他设备上会导致初始启动 Intent 被触发(有效地重新启动应用程序)。为什么会这样?

细节:

当您按下“启动器图标”时,应用程序会正常启动 - 也就是说,我假设会使用您的第一个 Activity 的名称启动一个 Intent,并使用操作 android.intent。 action.MAIN 和类别 android.intent.category.LAUNCHER。然而,情况并非总是如此:

在大多数设备上,如果您在应用程序已经运行后按下启动器图标,则该进程中当前正在运行的 Activity 将恢复(不是初始 Activity )。它恢复的方式与您从操作系统菜单的“最近的任务”中选择它的方式相同。这是我希望在所有设备上的行为。

但是,在选定的其他设备上会出现不同的行为:

  • 在摩托罗拉 Xoom 上,当您按下启动器图标时,应用程序将始终启动初始启动 Activity,而不管当前正在运行什么。我假设启动器图标总是启动“LAUNCHER” Intent 。

  • 在三星 Tab 2 上,当您按下启动器图标时,如果您刚刚安装了该应用程序,它将始终启动初始 Activity(与 Xoom 相同) - 但是,安装后重新启动设备后,启动器图标将恢复应用程序。我假设这些设备会在设备启动时将“已安装的应用程序”添加到查找表中,从而允许启动器图标正确恢复正在运行的任务?

我已经阅读了许多 听起来 与我的问题相似的答案,但只需添加 android:alwaysRetainTaskState="true" 或使用 launchMode="singleTop"Activity 不是答案。

编辑:

在最近一次启动此应用后,我们发现在第一次重启后所有设备上已经开始出现这种行为。这对我来说似乎很疯狂,但通过重新启动过程,我实际上找不到问题所在。

最佳答案

您遇到的行为是由自 API 1 以来某些 Android 启动器中存在的问题引起的。您可以在此处找到有关该错误的详细信息以及可能的解决方案:https://code.google.com/p/android/issues/detail?id=2373 .

这是三星设备以及使用自定义启动器/皮肤的其他制造商的一个相对常见的问题。我还没有在普通的 Android 启动器上看到这个问题。

基本上,应用程序实际上并没有完全重新启动,但是当启动器恢复应用程序时,您的启动 Activity 正在启动并添加到 Activity 堆栈的顶部。当您恢复应用程序并显示启动 Activity 时,您可以通过单击后退按钮来确认是这种情况。然后,您应该会被带到您希望在恢复应用时显示的 Activity。

我选择实现以解决此问题的解决方法是检查启动初始 Activity 的 Intent 中的 Intent.CATEGORY_LAUNCHER 类别和 Intent.ACTION_MAIN 操作。如果存在这两个标志并且 Activity 不在任务的根目录(意味着应用程序已经在运行),那么我在初始 Activity 上调用 finish()。那个确切的解决方案可能不适合你,但应该有类似的东西。

这是我在初始/启动 Activity 的 onCreate() 中所做的:

    if (!isTaskRoot()
&& getIntent().hasCategory(Intent.CATEGORY_LAUNCHER)
&& getIntent().getAction() != null
&& getIntent().getAction().equals(Intent.ACTION_MAIN)) {

finish();
return;
}

关于android - 应用程序重新启动而不是恢复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19545889/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com