从Google Play商店更新后的多个任务堆栈

时间:2013-12-29 05:44:35

标签: android

我有一个Android应用,在从Google Play商店更新到新版本后遇到了错误。此错误仅发生在某些设备上。在某些设备上(比如我的Nexus4),我没有看到这个bug。因此,让我解释一下无法正常工作的设备上的问题。

为简单起见,我们假设我的应用程序有2个活动,ActivityA和ActivityB。我们假设ActivityA是发布活动。我们还假设ActivityA上有一个按钮,它为ActivityB创建一个新的Intent(同时将ActivityA保留在任务堆栈中,因此单击“返回”按钮将返回到ActivityA)。

在某些设备上,我注意到在从Google Play商店更新到新版本后,该应用似乎启动了自身的新版本(或新的任务堆栈,不知道如何确定究竟发生了什么)。 / p>

我的目的是在更新后将用户返回到他们中断的位置。因此,如果他们在ActivityB上,并且他们点击应用程序图标,我希望他们返回到ActivityB(这种情况发生在我的Nexus4上没有干预,但似乎没有在其他设备上发生)。

为了解决这个问题,我在我的启动活动中添加了逻辑,以进行用户上次使用的活动。我通过在每个活动的onStart()方法的SharedPreferences中存储变量来实现这一点。在启动活动的OnCreate()方法中,我检查是否设置了此SharedPreference变量,如果是,请检查它是否设置为启动活动之外的其他内容。如果它不同,我会为SharedPreference中引用的活动创建一个新的Intent,并启动该活动。

我遇到的问题是(在某些设备上),当我这样做时,它似乎启动了一个单独的任务堆栈。这就是我所看到的:

  1. 用户启动应用(启动ActivityA)
  2. 用户点击按钮(启动ActivityB)
  3. ActivityB的OnStart()在SharedPreferences
  4. 中存储“ActivityB”
  5. 用户将应用更新到Google Play商店的最新版本(点击Google Play商店图标,选择“我的应用”,然后点击“全部更新”)
  6. 用户点击手机主屏幕上的应用图标快捷方式
  7. 启动活动检测到SharedPreference设置为ActivityB,因此它为ActivityB创建了一个新的Intent(这是用户看到的第一个内容)
  8. 用户点击后退按钮并看到ActivityA
  9. 用户点击后退按钮并看到ActivityB **
  10. 用户点击后退按钮并看到ActivityA
  11. 用户点击后退按钮,看到Android主屏幕(应用程序已关闭)
  12. **这里是我希望看到Android主屏幕的地方,但它看起来是应用程序的另一个版本,或者另一个任务堆栈仍在运行。

    如何从Google Play商店更新到新版本后确保没有其他任务正在运行?

1 个答案:

答案 0 :(得分:0)

我能够通过设置来解决这个问题:

android:launchMode="singleTask"

关于我在清单中的活动。