任务Killer应用程序与SupportFragmentManager Backstack

时间:2011-09-23 12:42:23

标签: android android-fragments

我面临以下非常烦人的问题:

我正在使用 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

1 个答案:

答案 0 :(得分:0)

虽然您的应用程序确实已被杀死,但在您尝试再次启动时,技术上并没有“完全重启”。这肯定不是Android希望您考虑这种情况的方式。

当您对应用程序进行后台处理时,Android将保存已添加到片段管理器的片段的状态(以及打开的活动的状态及其视图状态)。当您在被杀之后重新启动应用程序时,Android将返回所有这种状态,因此您应该能够从中断的位置恢复。这意味着您应该考虑“用户交互A”已经发生,并且您再次处于步骤2)。正如你所注意到的那样,后躯保存完好;这是因为您执行的片段事务也会被保留。

问题当然是,我们并不总是以匹配此行为的方式编写应用程序。如果你的应用程序在被背景导致被杀后显示“重新开始”,那么可以说它并没有真正遵循Android方法(假设有一些用户状态值得保存)。

我认为你应尽量恢复,如步骤2);它可能(稍微!)比试图阻止Android保存这种状态更容易。