任务杀手级应用vs. SupportFragmentManager Backstack



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

我正在使用谷歌兼容性库,以便未来证明我的应用程序。现在…我在跟踪我的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 ---

此时,我希望backstack的大小为1

如果用户现在按下back,应用程序会把他带回到以前的状态,这已经没有意义了,因为应用程序呈现了一个新的开始。

你知道怎么做吗??

Thx

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

当你后台你的应用程序,Android将保存已添加到片段管理器的片段的状态(以及哪些活动的状态是开放的,和他们的视图状态)。当你在被杀死后重新启动应用时,Android会把所有这些状态都还给你,所以你应该能够从你离开的地方重新开始。这意味着你应该考虑"用户交互A"已经发生了,你实际上又回到了步骤2)。正如你所注意到的,backstack被保留了下来;这是因为您执行的片段事务也被保留。

问题当然是,我们并不总是以匹配这种行为的方式编写应用程序。如果你的应用程序在后台被杀死后呈现一个"新的开始",那么可以说它并没有真正遵循Android的方法(假设有一些值得保存的用户状态)。

我认为你应该尽你所能恢复到第2步;这可能会比试图阻止Android保存这个状态更容易。

最新更新