我面临以下非常烦人的问题:
我正在使用 Google兼容性库,以便为我的应用提供面向未来的服务。
现在......我正在跟踪我的backstack
:
1)启动App。
2)用户交互A - >片段被添加到UI / Back Stack。
--- Backstack Size: 1 ---
3)用户“背景”应用程序。
4)用户使用Taskkiller杀死应用程序/或应用程序被Android系统杀死
5)再次启动应用程序。完全重新启动向用户显示的应用程序(Application.onCreate()
)。
6)用户交互A - >片段被添加到UI / Back Stack。
--- Backstack Size: 2 ---
此时我想要一个1 的背斜堆积。
如果用户现在按下back
,应用程序会将他带回到某个以前的状态,这个状态已经没有意义了,因为应用程序重新启动了。
关于如何做到这一点的任何想法??
THX
答案 0 :(得分:0)
虽然您的应用程序确实已被杀死,但在您尝试再次启动时,技术上并没有“完全重启”。这肯定不是Android希望您考虑这种情况的方式。
当您对应用程序进行后台处理时,Android将保存已添加到片段管理器的片段的状态(以及打开的活动的状态及其视图状态)。当您在被杀之后重新启动应用程序时,Android将返回所有这种状态,因此您应该能够从中断的位置恢复。这意味着您应该考虑“用户交互A”已经发生,并且您再次处于步骤2)。正如你所注意到的那样,后躯保存完好;这是因为您执行的片段事务也会被保留。
问题当然是,我们并不总是以匹配此行为的方式编写应用程序。如果你的应用程序在被背景导致被杀后显示“重新开始”,那么可以说它并没有真正遵循Android方法(假设有一些用户状态值得保存)。
我认为你应尽量恢复,如步骤2);它可能(稍微!)比试图阻止Android保存这种状态更容易。