Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过Android应用程序传递协议缓冲区对象_Android_Protocol Buffers - Fatal编程技术网

通过Android应用程序传递协议缓冲区对象

通过Android应用程序传递协议缓冲区对象,android,protocol-buffers,Android,Protocol Buffers,任何可序列化的或可分包的对象都可以通过意图进行交换。 但是protobuf对象不实现可序列化或可打包。 由于protobuf对象的实现将来可能会发生变化,因此不建议修改/扩展它们 如何通过Android Intent从协议缓冲区消息(生成的类)交换数据 编辑:我使用的是protobuf-2.3.0,其中没有实现Serializable。生成的消息于2010年11月2日开始实现Serializable。已于2011年4月发布。以下答案在2011年是正确的,但生成的消息集不再实现可序列化生成的消息仍

任何可序列化的可分包的对象都可以通过意图进行交换。 但是protobuf对象不实现可序列化或可打包。 由于protobuf对象的实现将来可能会发生变化,因此不建议修改/扩展它们

如何通过Android Intent从协议缓冲区消息(生成的类)交换数据


编辑:我使用的是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年的问题。我建议你在一篇新的帖子中提出一个更详细的问题