我的应用历史记录很正常;当我启动意图时,我没有使用任何花哨的标志或其他东西。只有按顺序、单任务启动的活动。如果我回到主屏幕,然后使用任务管理器杀死我的应用程序,下一次打开应用程序时,它会从最后一个被杀死之前所在的活动开始而不是声明的主要活动。此外,如果我再次打开应用程序并按返回键退出应用程序,然后重新打开它,我会得到在上一次被杀死之前打开的活动。
类似这样:
A = 主要活动;B = 其他活动;C = 其他活动
- 打开应用程序 - A
- 打开B - B
- 打开C - C
- 使用任务管理器杀死应用程序
- 打开应用程序 - C
- 返回键 - 设备主屏幕
- 打开应用程序 - B
- 返回键 - 设备主屏幕
- 打开应用程序 - A
我希望在任务杀死后不会记住后台堆栈。我希望应用程序始终从声明的主要活动开始,除非它已经在后台运行。(这里不是这种情况,因为使用了kill)然而,这两件事似乎都没有发生,我不知道为什么。
我尝试在我的Application类中设置一个"initialized"布尔值,在A的onCreate中进行检查,在B和C的onCreate中进行检查。这个想法是使用NEW_TASK和CLEAR_TOP标志启动A的意图,以尝试检测和纠正这种情况,但它仍然表现出完全相同的行为,除了还会把A放在剩下的所有活动之上。所以,它不是把应用程序启动到B,而是把应用程序启动到BA。
基于我所读过的关于活动生命周期和操作系统杀死应用程序的所有内容,这是不可能的,但它确实在我所有的测试设备上发生。有没有人有任何想法,可以解释这种奇怪的行为?