【问题标题】:Android parcel, stored in memory or on disk? How to store on diskAndroid 包裹,存储在内存中还是磁盘上?如何存储在磁盘上
【发布时间】:2012-05-13 07:00:14
【问题描述】:

我看到 parcel 和 serializable 可以互换使用,或者至少在同一上下文中不直观。你能帮我澄清一些事情吗?

  1. 是包裹的持久存储(在磁盘上)或仅存储在内存中

  2. 我是否需要可序列化才能将宗地数据存储到磁盘

感谢您的洞察力,不,android 开发手册并没有让我明白这一点

【问题讨论】:

    标签: android serializable parcelable parcel


    【解决方案1】:

    我的回答:

    1. Parcel 用于扁平化对象,因此它们可以存储在 JVM 运行内存之外的其他位置。

    2. 您不需要将可序列化与包裹混合以将数据存储到磁盘。一个或另一个就足以将对象存储到磁盘。


    Serializable 和 Parcelable 都是扁平化 Java 对象的方法。

    这些扁平化的对象可以通过各种传输格式在进程之间传递——包括磁盘文件。

    Serializable 来自核心 Java,易于使用。

    Parcelable 来自 Android,稍微复杂一些。

    此答案包含更多详细信息:

    https://stackoverflow.com/a/5551155/523135

    这篇博文有示例代码 Parcelable:

    http://blog.cluepusher.dk/2009/10/28/writing-parcelable-classes-for-android/

    这篇博文有示例可序列化代码:

    http://www.javapractices.com/topic/TopicAction.do?Id=45

    【讨论】:

      【解决方案2】:

      阅读包裹文档。包裹不应放置在持久存储中。

      摘录:

      "...Parcel 不是通用的序列化机制。这个类(以及用于将任意对象放入 Parcel 的相应 Parcelable API)被设计为高性能 IPC 传输..."

      "... 将任何 Parcel 数据放入持久存储中是不合适的:Parcel 中任何数据的底层实现的更改都可能导致旧数据不可读。"

      http://developer.android.com/reference/android/os/Parcel.html

      【讨论】:

        猜你喜欢
        • 2011-06-08
        • 1970-01-01
        • 1970-01-01
        • 2016-12-04
        • 2014-06-10
        • 1970-01-01
        • 2012-08-02
        • 1970-01-01
        • 2010-12-29
        相关资源
        最近更新 更多