发生了什么:
>我打开我的应用程序,然后按主页按钮离开它片刻.
>我进入设置>应用程序>管理应用程序>运行,在缓存的后台应用程序列表中找到我的应用程序,然后停止它.
>然后我按住主页按钮并在最近的应用程序列表中选择我的应用程序,然后再次运行它.
[注意:这些步骤只是我强迫测试人员看到的相同症状的方式 – 他们只是正常进出应用程序,而不是强迫它关闭.
它在我离开它的活动中打开,但处于不良状态.第一个问题是持有用户信息的内存消失了(如果应用程序被杀死则有意义).我通过使User类可序列化并将当前用户对象存储在onSaveInstanceState中,然后将其加载回onCreate来解决这个问题.同样,我不得不重新创建ClientConnectionManager以使网络再次工作.
“重新加载”活动运行得很好,我可以导航到并使用新创建的活动,但如果我按下后退按钮返回到我强行停止应用程序之前创建的活动,我会得到一个例外,说明用户类不存在(ClassNotFoundException,显然在执行unparcel时).
为什么会这样?应用程序被杀死时处理案例的正确方法是什么,但仍然知道在重新打开时要返回哪个活动?应用程序未运行但未完全关闭的状态名称是什么?
解决方法:
>您可以指定哪些活动将显示在“最近的应用”上,并确保仅包含主要活动或任何其他“安全”活动(android:excludeFromRecents)
>您可以通过在启动意图中查找FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY来识别“从历史发起”案例
标签:android
来源: https://codeday.me/bug/20190723/1512962.html