2012-03-26 41 views
5

我想保存我的應用程序的狀態,以便當它從關閉狀態重新打開時,最後一個片段是可見的,並且後退堆棧被保留。我想每次保持這種狀態下,應用程序被關閉,而不僅僅是改變方向時,或當系統殺死的應用程序以釋放資源(如使用onSaveInstanceState()/onRestoreInstanceState()時的情況。如何將應用程序堆棧保存到一個包中?

到目前爲止,我通過將狀態保存到SharedPreferences並稍後恢復,可以恢復之前的片段及其狀態,但這並不能保留片段返回堆棧,因此當用戶加載應用程序並按下後退按鈕以移動「up」在應用程序流程中,應用程序退出而不是上升

我現在需要的是能夠訪問應用程序返回堆棧,並在必要時將其保存到一個包中,系統在onSaveInstanceState()。我已閱讀FragmentManager.saveFragmentInstanceState()的文檔,但我不確定如何使用它來實現我的目標。任何人都可以指引我走向正確的方向嗎?

我正在使用Android兼容性庫中的片段實現。

回答

4

據我所知Android系統不會讓你得到任務的後退堆棧,它只能在give you頂部Activity的所有任務運行。因此,您需要實現自己的維護Activities退棧的機制。執行LocalActivityManager可能會對您有所幫助,特別是其saveInstanceState()方法。所以你可以做類似的事情,並在你想要的時候在你的後退堆棧中調用onSaveInstanceState(Bundle),然後持續Bundle(例如在一個文件中)。如果您使用Fragments,那麼您還需要維護其背靠背。

或許,android:alwaysRetainTaskState可能會幫助您解決您的問題,而不是潛入管理後退堆棧。

+0

'android:alwaysRetainTaskState'看起來很有趣。一旦我有時間調查,我會報告回來。 – howettl 2012-03-31 00:10:55

相關問題