0

我有一个包含多个活动的应用程序。第一个是登录/启动活动,随后是一些在应用程序生命周期内发生变化的活动(及其“登录”连接)。

如果用户按下主页按钮,它会返回到 Launcher。一切都很好。如果用户转到“最近的应用程序”并选择我的应用程序,它会从停止的地方返回(所需的行为)。如果用户转而转到启动器中的我的图标并再次启动应用程序,我会得到两种行为之一。1. 活动完全返回到它之前的位置,就像我从最近的应用程序中选择它时一样。2. 活动被带到初始登录屏幕。不是我所期待的。在大多数设备和 Android 版本上似乎并非如此,但似乎每次都在某些设备上发生。我无法将其固定到 4.0.4 或 4.1 或 4.2 - 我们在某些手机的所有 3 个版本上都看到了这种行为。

当我在移动到启动器时查看这些系统上的活动堆栈(使用 dumpsys)时,它们似乎是相同的(我在堆栈上看到我最近的,就在启动器下方,我还看到我的应用程序堆栈我最近的在上面)。但是当我点击启动器中的应用程序图标时,在大多数设备上,我看到它返回并且活动堆栈在顶部显示我最近的。但是在其他几台设备上,我在最近的设备上看到了登录活动。如果我在登录活动中单击“返回”按钮,我会很高兴地回到我离开的地方。

为了说明,在我点击主页然后单击我的应用程序图标后,在某些设备上,我看到以下堆栈:

"ConnectActivity2"
"ConnectActivity1"
"LoginActivity"

在这些其他人身上,我看到:

"Login Activity"
"Connect Activity2"
"Connect Activity1"
"Login Activity"

是否有一个选项可以控制设备/操作系统上的这种行为?或者在我的应用程序中我需要在转换到“家”时做些什么来决定它如何返回到我的应用程序(如果是这样,为什么有时只需要)?

4

1 回答 1

0

我不知道这样的选项,我认为它不存在,因为应该在应用程序启动时启动的主应用程序活动在清单文件中指定。但是,在我的应用程序中,我必须和你做同样的事情,我创建了名为 SwitchActivity 的活动。

其目的如下:

  • 显示带有大徽标或其他任何内容的启动画面
  • 在显示启动画面时,检查您是否已经登录用户
  • 如果是 - 然后转发到您需要的任何活动,这意味着您关闭启动并使用自己的堆栈创建新的根活动,以便当用户点击根活动上的后退按钮时,应用程序进入后台
  • 如果没有 - 转发登录。
于 2013-09-13T16:20:49.023 回答