恢复后如何返回相同的活动实例?

| 这个问题有些奇怪,在尝试解决大约一天之后,我将其发布在这里。 我有一个应用程序,其中活动A(主要活动)启动其他活动(B,C或D)。 当活动A启动活动B并按下\'home \'按钮时,就会发生此问题。 情况1-按下\'home \'按钮后,当我在设备(HTC Desire)上以调试模式测试应用程序时,我再次单击该应用程序图标,它返回相同的活动(活动B),即应该做。这里没有问题。 情况2-当我导出已签名的程序包,然后将应用程序安装在同一设备上时,如果在按下\'home \'按钮后单击应用程序图标,则会启动活动A(主活动)的新实例活动B的顶部。我了解这一点是因为当我从该活动中按\'back \'时,它返回到活动B,然后按\'back \'再次显示活动A。 如果应用程序以启动时的相同顺序退出,则该行为将不再存在,也就是说,如果我从活动B中按\'back \',然后在活动A中按\'back \'(退出)。 之后,一切运行正常。 我已经使用不同的设置对其进行了多次测试,但似乎无法弄清楚为什么会这样。 任何帮助表示赞赏。     
已邀请:
        我认为在清单中给Activity A添加“ \ single top \”标志应该可以解决此问题。     
        关于情况1: 从活动A启动意图以开始活动B时,添加标志FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET 这样可以确保当您回家并再次启动该应用程序时,将显示活动A。 关于情况2: 我不确定这将如何发生。似乎您认为您有该应用程序的两个版本,签名的版本和未签名的版本,但是将它们都放在同一任务堆栈中。如果您只想要一个实例,则可能要考虑为活动使用singleTask或singleInstance。有关更多详细信息,请参见任务和后退文档。     
        对于情况2的可能原因,我会同意Noel的观点。如果没有将任务重定父级或将其设置为启动模式以防止活动的多个实例,则有可能从Home启动它与启动它的堆栈不同从Eclipse(假设是这种情况)。 在我的人才计算器应用程序中,我将整个应用程序设置为allowTaskReparenting = true,以确保其他堆栈(主要是电子邮件,因为它可以通过电子邮件发送启动URL)中没有剩余内容。然后,将我的主要活动设置为launchMode = \“ singleTask \”,因为无论是启动它还是出于任何目的,我都只希望存在一个实例。 我唯一的其他活动是用于加载和保存,并且具有noHistory = \“ true \”来确保将其删除并且永远不会返回。这基本上意味着它仅在您处于其中时存在,并且永远无法返回。 clearTaskOnLaunch = \“ true \”还将确保从主页启动主Activity时仅将其保留在堆栈中,但是如果您有其他进入活动的方法,则并非总是如此。如果仅从家庭启动,则进行设置。 希望所有的帮助。     
        您是手动启动应用程序还是使用Eclipse或另一个IDE?从Intellij IDEA启动时,我遇到了完全相同的问题。然后我停下来并手动运行它,并且行为符合预期。     

要回复问题请先登录注册