2

现有的 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 方便。

4

1 回答 1

0

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

我将继续使用可序列化,您可以在此处阅读有关我在此主题上的发现的更多信息。

于 2015-03-25T00:33:11.537 回答