gpt4 book ai didi

java - 如何将对象树传递到包中?

转载 作者:行者123 更新时间:2023-12-02 00:29:15 25 4
gpt4 key购买 nike

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

我首先尝试使用 onSaveInstanceState(),但 savinginstancestate bundle 不允许我传递所需对象的实例。我尝试将该对象作为包裹传递,但对象内的对象无法保存到包裹中。

最后,我尝试使用 getNonConfigurationInstance,但它似乎不起作用,当我发现它已折旧时,我放弃了让它工作。它的替代方案是 API11,我正在使用 API7。

感谢任何建议,我已通读文档,但除了遍历所有对象并一一保存每个变量以保存实例状态之外,找不到任何内容。

谢谢

最佳答案

  1. 您应该仅将 getNonConfigurationInstanceonRetainNonConfigurationInstance 结合使用,因为前者保留对象,后者保存对象。此外,它们适用于配置更改,即当 Activity 在同一进程中立即重新创建时。

  2. 如果树上的对象很简单,您可以尝试将其转换为 JSON 格式,然后对其进行序列化/反序列化。我曾经这样做过以保存 Controller 层次结构的状态,效果很好。

  3. 您可以将 Bundle 放入 Bundle 内,并使用 putBundle(String key, Bundle value)

  4. 您可以将 Parcelable 放入 Bundle 内,并使用 putParcelable(String key, Parcelable value)

选项 2、3 和 4 将要求您将树的递归转换器写入 JSONObject s、Bundle s 或 Parcelable s。

关于java - 如何将对象树传递到包中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9437843/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com