【问题标题】:Android, Serializable/Parcelable problem in client-server appAndroid,客户端-服务器应用程序中的可序列化/可打包问题
【发布时间】:2011-01-22 16:19:03
【问题描述】:

我想通过 TCP 套接字将复杂数据从我的 android 发送到远程服务器。我知道我需要序列化对象。在 Android 中,这是通过 parcelable 完成的。但这是一个 android 特定的接口,服务器只知道可序列化的接口。反之亦然 android 不知道可序列化的接口。

android 和服务器都必须“知道”对象,但它们以两种不同的方式实现(服务器--> 可序列化,android--> 可打包)

如何正确使用这些接口,才能成功通过TCP向服务器发送Object?

【问题讨论】:

    标签: android client-server parcelable


    【解决方案1】:

    为什么不使用简单 XML 序列化,适用于 Android 和 Java 1.5+。它位于以下站点。

    http://simple.sourceforge.net

    此外,该框架相当小,适合移动平台(大约 270K,没有依赖关系)。而且它比大多数 XML 序列化或绑定框架性能更高。

    【讨论】:

    • 您是否基于某种形式的基准。在性能方面,Simple 是 XStream 和其他此类 XML 框架的负责人。事实上,我只是在一个非常大的对象图上做了一个测试,我已经坚持使用 Simple,将它与 Java 对象序列化进行比较。 Simple 的读取性能是 1.4 秒读取对象,Java 对象序列化 ObjectInputStream 需要 2.2 秒,慢得多。使用 Simple 的唯一缺点是生成的对象是 16,596 KB 写入 XML,而 Java 序列化结果是 9,896 KB。不过,Simple 的速度要快得多。
    【解决方案2】:

    我们在工作中遇到了同样的问题,我们切换到 JSON。也许你应该考虑做同样的事情?!

    编辑:Android 确实知道 Serializable 接口。我怎么会忘记……

    【讨论】:

      【解决方案3】:

      根据http://developer.android.com/reference/android/os/Parcel.html,不适合使用parcel进行持久(或网络)序列化:

      Parcel 不是通用的序列化机制。这节课 (以及用于放置任意对象的相应 Parcelable API into a Parcel) 被设计为高性能 IPC 传输。作为 因此,将任何 Parcel 数据放入持久化中是不合适的 存储:任何数据的底层实现的变化 在 Parcel 中可以使旧数据不可读。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-05-11
        • 1970-01-01
        • 1970-01-01
        • 2013-09-10
        • 2020-08-25
        • 2011-06-03
        • 1970-01-01
        • 2011-07-04
        相关资源
        最近更新 更多