希望有人能帮助我找出(如果不是解决方案的话)至少是一种行为的解释。
问题:
在某些设备上,按下启动器图标会导致当前任务恢复,而在其他设备上,会导致触发初始启动意图(有效地重新启动应用程序)。为什么会这样?
细节:
当您按下“启动器图标”时,应用程序将正常启动-也就是说,我假设启动了一个Intent,其中包含您的第一个Activity
操作android.intent.action.MAIN
和类别的名称android.intent.category.LAUNCHER
。但是,情况并非总是如此:
在大多数设备上,如果在应用程序已运行后按启动器图标,则将恢复该进程中当前正在运行的活动(不是 initial Activity
)。它的恢复方式与从OS菜单的“近期任务”中选择它的方式相同。这是我想要在所有设备上的行为。
但是,在选定的其他设备上,会发生不同的行为:
在Motorola Xoom上,当您按启动器图标时,无论当前正在运行什么,该应用程序将始终启动初始启动
Activity
。我假设启动器图标始终启动“ LAUNCHER”意图。在Samsung Tab 2上,当按启动器图标时,如果您刚刚安装了该应用程序,它将始终启动初始程序
Activity
(与Xoom相同)-但是,在安装后重新启动设备后,启动器图标将改为恢复应用程序。我假设这些设备在设备启动时将“已安装的应用程序”添加到查找表中,从而允许启动器图标正确恢复正在运行的任务?
我读过很多回答的声音类似我的问题,但简单地添加android:alwaysRetainTaskState="true"
或使用launchMode="singleTop"
的Activity
并不是答案。
编辑:
在此应用程序的最新启动后,我们发现在第一次重新启动后,所有设备上都开始出现此现象。这对我来说似乎很疯狂,但是在重新启动过程中,我实际上找不到问题所在。
finish()
在Activity
再次启动第一个实例的情况下调用它们,而不是恢复它们。