任何对象可以通过意向,只要他们是序列化或parceable交换。但是protobuf的对象不实现Serializable或Parceable。由于protobuf的对象实现可能在未来发生变化,因此不建议修改/扩展它们。如何通过生成的类意向协议缓冲区交换?
编辑:我使用的protobuf-2.3.0,其中GeneratedMessage和GeneratedMessageLite不会实现Serializable。生成的消息开始实现Serializable 11月2日2010年Protobuf-2.4.1于2011年4月发布。
以下的答案必须在2011年是真实的,但GeneratedMessageLite
不再实行Serializable
。 GeneratedMessage
仍然如此。
GeneratedMessage
和GeneratedMessageLite
都实现Serializable
,所以你应该能够公正系列化任何具体产生的消息类,据我所知。是你想要的任何机会只是Message
序列化?
现在大概在Java的精简版(目前推荐用于Android系统)来做到这一点的最好办法是将对象转换到ByteArray,然后将其发送到活动并转换成字节数组回对象在目标活动。
// convert to byte array and pass to intent
Intent listResults = new Intent(activity, ImageResults.class);
listResults.putExtra( "reply", reply.toByteArray());
// Convert byte array to Object
result_list = (Search.SearchResponse) Search.SearchResponse.parseFrom(getIntent().getByteArrayExtra("reply"));
Java的纳米用来实现Parcelable
这可能与Android Parcelable
被用来发送活动之间的物体。但是Java的纳米不再,而GeneratedMessageLite
没有实现任何Serializable
或Parcelable
。