如何将对象树传递到一个包中?

时间:2012-02-24 20:50:52

标签: java android android-activity bundle

我有一个应用程序,主要由一个对象树组成的实例组成。每当我的手机睡觉或我切换应用程序时,我的应用程序都会重置,并且此对象树中的所有数据都将丢失。

我首先尝试使用onSaveInstanceState(),但savedinstancestate包不允许我传递我需要的对象的实例。我试图将对象作为包裹传递出去,但是我的对象中的对象无法保存到包裹中。

最后,我尝试使用getNonConfigurationInstance,这似乎不起作用,当我查看它已被折旧时,我放弃了让它工作。替代它的是API11,我使用的是API7。

任何建议都表示赞赏,我已经阅读了文档,但找不到任何关于遍历所有对象并逐个保存每个变量以保存我的实例状态的内容。

由于

1 个答案:

答案 0 :(得分:3)

  1. 您应该仅将getNonConfigurationInstanceonRetainNonConfigurationInstance结合使用,因为前者保留了对象而后者保存了对象。此外,他们仅使用 进行配置更改 - 即,在同一过程中立即重新创建活动时。

  2. 如果树上的对象很简单,可以尝试将其放入JSON格式,然后对其进行序列化/反序列化。我曾经这样做是为了坚持我的控制器层次结构,工作得很好。

  3. 您可以BundleBundle放入putBundle(String key, Bundle value) {。}}。

  4. 您可以ParcelableBundle放入putParcelable(String key, Parcelable value) {。}}。

  5. 选项2,3和4将要求您将树的递归转换器写入JSONObjectBundleParcelable s。