我想保存应用程序的状态,以便当从关闭状态重新打开它时,最后一个片段可见并且保留返回堆栈。我想在每次关闭应用程序时保留此状态,而不仅仅是在方向更改或系统终止应用程序以释放资源时(就像使用时的情况一样)onSaveInstanceState()
/onRestoreInstanceState()
.
到目前为止,我已经能够通过将状态保存到 SharedPreferences 并稍后恢复来按计划恢复前一个片段及其状态。但是,这不会保留片段后退堆栈,因此当用户加载应用程序并按后退按钮在应用程序流程中“向上”移动时,应用程序会退出而不是向上移动。
此时我需要的是能够访问应用程序返回堆栈并在必要时将其保存到捆绑包中,就像系统在onSaveInstanceState()
。我已经阅读了文档FragmentManager.saveFragmentInstanceState()
但我不知道如何用它来实现我的目标。有人能指出我正确的方向吗?
我正在使用 Android 兼容性库中的片段实现。
据我所知Android系统不会让你获取任务的返回堆栈,它只能give you http://developer.android.com/reference/android/app/ActivityManager.html#getRunningTasks%28int%29顶端Activity
所有正在运行的任务。因此,您需要实施自己的机制来维护Activities
后栈。实施LocalActivityManager http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/2.2_r1.1/android/app/LocalActivityManager.java/可能会帮助你,特别是它saveInstanceState() http://developer.android.com/reference/android/app/LocalActivityManager.html#saveInstanceState%28%29方法。所以你可以做类似的事情并打电话onSaveInstanceState(Bundle)
每当您需要时,您的后台堆栈中的活动,然后坚持Bundle
(例如,在文件中)。如果你使用Fragments
那么你还需要维护他们的后堆栈。
也许,android:alwaysRetainTaskState http://developer.android.com/guide/topics/manifest/activity-element.html#always可能会帮助您解决问题,而不是深入管理后堆栈。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)