如何将应用程序堆栈保存到捆绑包中?

how*_*ttl 6 android android-lifecycle android-fragments back-stack

我想保存我的应用程序的状态,以便在从关闭状态重新打开时,最后一个片段是可见的并且后备堆栈被保留.我希望每次关闭应用程序时都保留此状态,而不仅仅是方向更改或系统杀死应用程序以释放资源(就像使用onSaveInstanceState()/ 时的情况一样)onRestoreInstanceState().

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

此时我需要的是能够访问应用程序后台堆栈并在必要时将其保存到捆绑包中,就像系统所做的那样onSaveInstanceState().我已经阅读了文档,FragmentManager.saveFragmentInstanceState()但我不知道如何使用它来实现我的目标.任何人都能指出我正确的方向吗?

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

a.c*_*ch. 5

据我所知,Android系统不会让你获得任务的后台堆栈,它只能让你Activity运行的所有任务中占据首位.因此,您需要实现自己的维护Activities后台堆栈的机制.实施LocalActivityManager可能会帮助您,特别是其saveInstanceState()方法.因此,您可以onSaveInstanceState(Bundle)随时执行类似的操作并在后台堆栈中调用Activities,然后保留Bundle(例如,在文件中).如果你使用Fragments那么你还需要保持他们的后台.

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