通过Android应用程序传递协议缓冲区对象
任何可序列化的或可分包的对象都可以通过意图进行交换。 但是protobuf对象不实现可序列化或可打包。 由于protobuf对象的实现将来可能会发生变化,因此不建议修改/扩展它们 如何通过Android Intent从协议缓冲区消息(生成的类)交换数据通过Android应用程序传递协议缓冲区对象,android,protocol-buffers,Android,Protocol Buffers,任何可序列化的或可分包的对象都可以通过意图进行交换。 但是protobuf对象不实现可序列化或可打包。 由于protobuf对象的实现将来可能会发生变化,因此不建议修改/扩展它们 如何通过Android Intent从协议缓冲区消息(生成的类)交换数据 编辑:我使用的是protobuf-2.3.0,其中没有实现Serializable。生成的消息于2010年11月2日开始实现Serializable。已于2011年4月发布。以下答案在2011年是正确的,但生成的消息集不再实现可序列化生成的消息仍
编辑:我使用的是protobuf-2.3.0,其中没有实现Serializable。生成的消息于2010年11月2日开始实现Serializable。已于2011年4月发布。以下答案在2011年是正确的,但
生成的消息集
不再实现可序列化
<代码>生成的消息仍然有效
而且两者都实现了可序列化,所以就我所知,您应该能够序列化任何特定生成的消息类。您是否有机会尝试序列化消息?目前,在Java lite(目前推荐用于Android)中实现此目的的最佳方法可能是将对象转换为,然后将其发送到活动,并将字节数组转换回目标活动中的对象
// 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 nano用于实现
Parcelable
,可与Android Parcelable
一起用于在活动之间发送对象。但是Java nano不再是了,而且GeneratedMessageLite
也没有实现Serializable
或Parcelable
哎哟,我的GeneratedMessage源代码不同于google代码。Jon还有一点。@raychenon:当然,这完全有可能只是最近的一次更改-我没有检查历史记录以了解它何时开始实现Serializable。我知道这有点无关,但是有没有可能有人可以发布一个传递GeneratedMessage的示例代码?GeneratedMessageLite似乎不再实现可序列化的。@Subinbab:恐怕这真的不够详细,特别是对于一个将近10年的问题。我建议你在一篇新的帖子中提出一个更详细的问题