使用协议缓冲区对象(序列化为字节数组)作为意图在 Android 活动之间传递而不是在经典 POJO 上实现 Parcelable 是一个好主意吗?它将如何影响性能?
谢谢马库斯
使用协议缓冲区对象(序列化为字节数组)作为意图在 Android 活动之间传递而不是在经典 POJO 上实现 Parcelable 是一个好主意吗?它将如何影响性能?
谢谢马库斯
要确定您必须针对您的特定情况进行测试。
关于Parcel的注意事项:
您可能知道,这是一个手动过程:您必须遍历对象树并调用 Parcel 的各种序列化方法,例如writeFloatArray(..)
. 没有魔法,它是低级的。
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
不要使用 Binder,因为它会创建一个代理(如果是跨进程的)。
可能最重要的是:使用 . 正确调整初始缓冲区的大小setDataCapacity(int size)
。这样内部数组就不需要增长(=内存分配+复制)。
如果您多次使用 Parcel,请使用recycle()
.