android - 在 Parcelable 中存储复杂的对象图?

标签 android parcelable

现有的 Parcelable 示例相当简单。如果您有一个复杂的对象图,则会很快出现以下问题,质疑其可行性:

  1. 有什么方法可以防止将一个对象多次写入包裹中?
  2. 在编写时是否有任何最佳实践来限制对象图的深度?

为第一个问题举个例子,对象 A 引用 B,B 又引用 A。这个循环导致写入 A,B,A,B,A,......直到我们得到 StackOverflowError,因为没有似乎是一种仅引用先前编写的对象的方法。

对于第二个问题,让我们有一个长图 A->B->C->D->E,我们想要序列化 ​​A 并增加深度 2,这就是 A->B-> C。我们通过编写一个自定义的 writeToParcelDeep 方法来做到这一点,这当然不如标准的 writeToParcel 方便。

最佳答案

Java 序列化将保留引用并只写入一次对象。此外,当前的设备比过去的设备更强大,我不太确定性能提升是否证明编写 Parcelable 生物板代码是合理的,尤其是像您的示例中那样复杂的代码。

我将继续使用 serializable,您可以阅读更多关于我在这个主题上的发现 here .

关于android - 在 Parcelable 中存储复杂的对象图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14836064/

相关文章:

java - 按内容格式化 ListView 项目

android - 即使传递的对象不为空,getParcelable 也返回空

android - 从 Android 中的 Parcelable 数组中获取值(value)

android - 自定义警报对话框 Android 中的 OnClickListener

安卓:ParcelFileDescriptor "createpipe"方法 64KB 错误

java - NullPointerException 试图读取 Parcel String[]

android.os.Parcelable[] 无法转换为...错误

android - BitmapFactory 从可绘制对象和文件返回位图的不同大小

android - 如何将匿名用户链接到 Firebase 云功能中的电话号码?

android - CollapsingToolbarLayout 问题 : overlapping UI with ToolBar