android - 如何将应用程序返回堆栈保存到包中?

标签 android android-fragments android-lifecycle back-stack

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

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

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

我正在使用来自 Android 兼容性库的 fragment 实现。

最佳答案

据我所知Android系统不会让你得到任务的返回栈,它只能give you所有正在运行的任务的顶部 Activity。因此,您需要实现自己的机制来维护 Activities 返回堆栈。实现LocalActivityManager可能对您有帮助,尤其是它的 saveInstanceState()方法。因此,您可以做类似的事情,并在需要时调用返回堆栈中 Activity 的 onSaveInstanceState(Bundle),然后保留 Bundle(例如,在文件中)。如果您使用 Fragments,那么您还需要维护它们的返回堆栈。

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

关于android - 如何将应用程序返回堆栈保存到包中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9879696/

相关文章:

java - Fragment中使用ListView时适配器不调用getView()

安卓无边框按钮

android - 使用列表、 fragment 和 map 实现选项卡的最佳方式?

android - OnBackPressedCallback 未在 Bottom Sheet 对话框 fragment 中调用

android - 如何在选项卡式应用程序中替换 LinearLayout 下的 fragment

android - Android中选项卡的生命周期

android - 注销时,清除 Activity 历史堆栈,防止 "back"按钮打开仅登录的 Activity

android - "Method in type not applicable for arguments"错误

Android Listview添加同一个item

当最后一个 Activity 被销毁时,Android 应用程序类没有被销毁