我有一个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,并启动该活动。
我遇到的问题是(在某些设备上),当我这样做时,它似乎启动了一个单独的任务堆栈。这就是我所看到的:
**这里是我希望看到Android主屏幕的地方,但它看起来是应用程序的另一个版本,或者另一个任务堆栈仍在运行。
如何从Google Play商店更新到新版本后确保没有其他任务正在运行?
答案 0 :(得分:0)
我能够通过设置来解决这个问题:
android:launchMode="singleTask"
关于我在清单中的活动。