4

使用协议缓冲区对象(序列化为字节数组)作为意图在 Android 活动之间传递而不是在经典 POJO 上实现 Parcelable 是一个好主意吗?它将如何影响性能?

谢谢马库斯

4

1 回答 1

3

要确定您必须针对您的特定情况进行测试。

关于Parcel的注意事项:

  1. 您可能知道,这是一个手动过程:您必须遍历对象树并调用 Parcel 的各种序列化方法,例如writeFloatArray(..). 没有魔法,它是低级的。

  2. Parcel.java 是原生实现的包装器,因此它应该已经非常优化:http ://www.google.com/codesearch/p?hl=en#uX1GffpyOZk/libs/binder/Parcel.cpp&q=Parcel.cpp% 20包:android&sa=N&cd=1&ct=rc

  3. 不要使用 Binder,因为它会创建一个代理(如果是跨进程的)。

  4. 可能最重要的是:使用 . 正确调整初始缓冲区的大小setDataCapacity(int size)。这样内部数组就不需要增长(=内存分配+复制)。

  5. 如果您多次使用 Parcel,请使用recycle().

于 2011-05-17T09:16:24.307 回答