android - 协议(protocol)设计

标签 android xml protocols protocol-buffers

我有一个客户端服务器程序,基于 http://www.anothem.net/archives/2010/10/15/android-usb-connection-to-pc/ 使用 usb 将 pc 与 android 手机通信

现在我需要设计一个协议(protocol)来促进从 pc 到手机的信息交换。我该怎么办?我们应该为此使用 XML 吗?我在看谷歌 Protocol Buffer 。这是正确的方向吗?

谢谢 卡罗琳

最佳答案

我一直在 Android 上使用 Protocol Buffer 。我避开了很长一段时间,理由是它太过分了。那是在我花了半天时间试用之前。

这是我花了一个下午的时间得出的结果。起初它将我的 APK 大小从 2.89 兆增加到 3.1 兆。我认为这无关紧要。然后我发现我能够删除我一直在手动解析的所有地方的代码。我能够删除要求数据按特定顺序输入的代码。

然后我能够完全删除我的应用程序中的几个类,它们的目的是充当临时的、轻量级的纯信息“模型”类,代表来自数据流的数据。简而言之,它开始让事情变得更简单、更小、更可靠。

Protocol Buffers 可能不是最适合您的情况。但我确实建议您花几个小时尝试一下。这样一来,您就可以从有实力和知识的位置做出放弃它的决定。

一定要使用精简版的protocol buffers。 .jar 文件是 160k,但它带来的功能量是巨大的。从现在开始,我会一直使用它。

在游戏上下文中长期使用动态内存分配/垃圾回收时,我确实有些担心。但目前序列化发生的频率足够低,对我来说不是问题。

另一个好处:我有一些 Python 代码可以生成应用程序读取的数据文件。该 python 代码处理一些 XML,然后生成二进制文件。我想我可以通过使用 Protocol Buffer 的文本模式完全消除该代码,然后直接使用 protoc 来创建二进制文件。

关于android - 协议(protocol)设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4283087/

相关文章:

android - 单击消息收件箱时是否可以进行身份​​验证

xml - 使用 Eclipse JUnit 插件显示我的测试?

ios - 无法使用类型为 '*' 的参数列表调用 '' - Swift 泛型问题

c++ - 我如何开始编写自己的类 IP 协议(protocol)?

java - 无法写入 Android 上的外部存储

java - 为什么使用 Intent 后会出现此错误?

ruby - 使用 Nokogiri::XML::Builder 添加元素

c# - 创建一个可序列化的类 - 复杂对象

protocols - 什么是 Webcal 协议(protocol)?

android - 是安卓:animateLayoutChanges supposed to work when a child view's height is updated?