现有的 Parcelable 示例相当简单。如果您有一个复杂的对象图,则会很快出现以下问题,质疑其可行性:
- 有什么方法可以防止将一个对象多次写入包裹中?
- 在编写时是否有任何最佳实践来限制对象图的深度?
为第一个问题举个例子,对象 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/