2012-02-24 63 views
0

我有一個應用程序,主要由一個對象樹實例組成。每當我的手機睡覺或我切換應用程序時,我的應用程序都會重置,並且此對象樹中的所有數據都將丟失。如何將對象樹傳遞到一個包中?

我第一次嘗試使用onSaveInstanceState(),但savedinstancestate包不會允許我傳遞我需要的對象的實例。我嘗試將對象作爲包裹傳遞,但對象內的對象無法保存到包裹中。

最後,我嘗試使用getNonConfigurationInstance這似乎並沒有工作,我放棄讓它工作,當我擡頭,它已折舊。替代它是API11,我使用API​​7。

任何意見讚賞,我已經閱讀了文檔,但找不到任何東西,通過我的所有對象,並保存每個變量一個接一個保存我的實例狀態。

感謝

回答

3
  1. 您應該只與onRetainNonConfigurationInstance結合使用getNonConfigurationInstance,因爲前者保留了對象,而後者將其保存。此外,他們只對工作進行配置更改 - 即在同一進程中立即重新創建活動時。

  2. 如果樹上的對象很簡單,可以嘗試將它放入JSON格式,然後序列化/反序列化它。我曾經這樣做,堅持我的控制器層次結構的狀態,工作得很好。

  3. 您可以將Bundle s放在Bundle s內,putBundle(String key, Bundle value)

  4. 您可以將Parcelable s放在Bundle s內,putParcelable(String key, Parcelable value)

選項2,3和4將要求您你的樹的遞歸轉換器寫入/無論從JSONObject S,Bundle S或Parcelable秒。

相關問題