- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个应用程序,主要由一个对象树实例组成。每次我的手机 hibernate 或切换应用程序时,我的应用程序都会重置,并且此对象树中的所有数据都会丢失。
我首先尝试使用 onSaveInstanceState(),但 savinginstancestate bundle 不允许我传递所需对象的实例。我尝试将该对象作为包裹传递,但对象内的对象无法保存到包裹中。
最后,我尝试使用 getNonConfigurationInstance,但它似乎不起作用,当我发现它已折旧时,我放弃了让它工作。它的替代方案是 API11,我正在使用 API7。
感谢任何建议,我已通读文档,但除了遍历所有对象并一一保存每个变量以保存实例状态之外,找不到任何内容。
谢谢
最佳答案
您应该仅将 getNonConfigurationInstance
与 onRetainNonConfigurationInstance
结合使用,因为前者保留对象,后者保存对象。此外,它们仅适用于配置更改,即当 Activity 在同一进程中立即重新创建时。
如果树上的对象很简单,您可以尝试将其转换为 JSON 格式,然后对其进行序列化/反序列化。我曾经这样做过以保存 Controller 层次结构的状态,效果很好。
您可以将 Bundle
放入 Bundle
内,并使用 putBundle(String key, Bundle value)
。
您可以将 Parcelable
放入 Bundle
内,并使用 putParcelable(String key, Parcelable value)
。
选项 2、3 和 4 将要求您将树的递归转换器写入 JSONObject
s、Bundle
s 或 Parcelable
s。
关于java - 如何将对象树传递到包中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9437843/
我是一名优秀的程序员,十分优秀!