6

我想保存我的应用程序的状态,以便当它从关闭状态重新打开时,最后一个片段是可见的,并且保留了返回堆栈。我想在每次关闭应用程序时保留此状态,而不仅仅是在方向更改或系统终止应用程序以释放资源时(如使用onSaveInstanceState()/时的情况) onRestoreInstanceState()

到目前为止,我已经能够通过将状态保存到 SharedPreferences 并稍后恢复它来按计划恢复以前的片段及其状态。但是,这不会保留片段返回堆栈,因此当用户加载应用程序并按下返回按钮以在应用程序流程中“向上”移动时,应用程序会退出而不是向上移动。

在这一点上,我需要的是能够访问应用程序回栈,并在必要时将其保存到包中,就像系统在onSaveInstanceState(). 我已经阅读了文档,FragmentManager.saveFragmentInstanceState()但我不确定如何使用它来实现我的目标。谁能指出我正确的方向?

我正在使用 Android 兼容性库中的片段实现。

4

1 回答 1

5

据我所知Android系统不会让你拿到任务的回栈,它只能给你所有正在运行的任务的顶部Activity。因此,您将需要实现自己的维护Activities后台堆栈的机制。的实现LocalActivityManager可能会对您有所帮助,尤其是它的saveInstanceState()方法。因此,您可以onSaveInstanceState(Bundle)随时在后台堆栈中执行类似的操作并调用活动,然后持久Bundle保存(例如,在文件中)。如果你使用Fragments那么你还需要维护它们的后栈。

也许,android:alwaysRetainTaskState可以帮助您解决您的问题,而不是潜入管理后台堆栈。

于 2012-03-30T08:33:41.203 回答