Dalvik到Java SE通信

时间:2011-01-24 16:49:58

标签: java android serialization dalvik

我正在计划开发一个Android应用程序,需要后端服务器与应用程序的其他用户同步数据。我打算在运行在unix服务器上的标准java中编写这个服务器。

我曾经直接在两个Android设备之间做过这个,在这种情况下,我只是序列化了两端需要发送的所有数据。

但是我怀疑Dalvik序列化的格式与Java SE的格式不兼容。是这样的吗?如果是的话,我的替代方案是什么?我想到的一件事就是将原始xml发送到套接字上,但如果有更好的选择,我会很高兴听到它们。

感谢。

6 个答案:

答案 0 :(得分:6)

如果您正在使用服务器,那么您应该依赖更标准的内容,如XML或JSON。我个人赞成JSON。您不应期望所有客户端都是Java友好的。几乎每个移动设备都支持JSON。查看Jackson库以生成您的json。然后你可以再次使用Jackson来反序列化你的对象。

这种解决方案的美妙之处也很简单。您只需将请求放入浏览器即可查看内容。二进制数据并不那么容易。

答案 1 :(得分:3)

我在Android设备和服务器之间成功使用了数据序列化。

我确实必须将TimeZone类转换为String并返回,因为TimeZone类特别不完全兼容(它尝试在sun.包中传递一些内容{{1}在Android上)。

除此之外,我已经能够从ClassNotFoundException馆藏和地图以及java.util数据类型转移对象,当然还有java.sql类型java.lang,{{1等等..

答案 2 :(得分:2)

您可以尝试protobuf进行序列化。它被认为更有效率,你不会担心兼容性。

您还可以使用某种形式的XML序列化(JAXB,XStream,XMLEncoder等)

this question的分辨率暗示 兼容。

答案 3 :(得分:1)

如果您的对象图非常简单,并且您完全熟悉JSON,则Android包含JSON support,并且很容易在Java SE中获得支持。我倾向于认为JSON是XML或Java序列化似乎“沉重”的一个很好的选择。

答案 4 :(得分:1)

查看this基准。 Kryo是我正在使用的那个。它支持创建自定义二进制序列化,可以以适合Dalvik和JSE的方式完成。

您可能需要查看related问题,该问题提供了额外的讨论和链接。

答案 5 :(得分:0)

协议缓冲区是一种很好的格式,需要考虑。

我不能谈论Dalvik的序列化。