如何控制应用程序运行时从启动器加载的活动

时间:2013-09-13 16:12:57

标签: android android-activity android-lifecycle activity-stack

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

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

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

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

"ConnectActivity2"
"ConnectActivity1"
"LoginActivity"

对于其他人,我看到了:

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

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

1 个答案:

答案 0 :(得分:0)

我不知道这样的选项,我认为它不存在,因为应该在应用程序启动时启动的主应用程序活动在清单文件中指定。但是,在我的应用程序中,我必须执行与您相同的操作,我创建了名为SwitchActivity的活动。

其目的如下:

  • 显示带有大徽标或任何
  • 的启动画面
  • 在显示启动时,检查您是否已登录用户
  • 如果是 - 那么转发到您需要的任何活动,这意味着您关闭启动并使用自己的堆栈创建新的根活动,以便当用户点击根活动上的按钮时应用程序变为背景
  • 如果没有 - 转发登录。