【问题标题】:Is it a good practice to serialize Parcelable objects for persistent storage?序列化 Parcelable 对象以进行持久存储是一种好习惯吗?
【发布时间】:2013-09-03 15:35:08
【问题描述】:

我有两个实现接口Item的对象:

public interface Item extends Parcelable{//unneeded stuff}

我想永久存储ArrayList<Item>。使Items Serializable 成为一种好习惯吗?

【问题讨论】:

    标签: android arraylist parcelable serializable


    【解决方案1】:

    Parcelable 和 Serializable 都不是持久化数据的好主意。如果可能,将持久性数据存储在 SharedPreferences 中,或者将其存储到文件中。

    如果您决定更改对象的结构,Serializable 可能会打击您。 Parcelable 不保证在不同版本之间保持不变;它旨在在进程之间传递数据,而不是存储数据。

    如果您想长期存储数据,则应将其写入文件。根据您想要访问它的方式,您可能希望将其存储在数据库或内容提供程序中。

    【讨论】:

    • 我正在开发的应用程序是一个购物清单,所以我希望数据能够长期存储。您如何建议我将数据写入文件?我的意思是,以什么格式?也许使用 Gson?
    【解决方案2】:

    通常,您可以根据需要使对象可打包/可序列化。如果您需要这些数据来重新创建您的 UI、传递到包等中,那么您将使其可序列化。

    【讨论】:

      【解决方案3】:

      创建对象Serializable 不会强制您使用任何特定的序列化方法。通用 Java 序列化效率很低,但没有什么能阻止您使 Serializable 使用 Android 打包(只需将 Parcel 编组到 writeObject 中的流)

      但我怀疑您是否真的需要序列化来实现数据持久性。在大多数情况下,共享首选项或数据库效果更好。

      【讨论】:

        猜你喜欢
        • 2018-12-12
        • 1970-01-01
        • 1970-01-01
        • 2015-06-01
        • 2012-05-18
        • 1970-01-01
        • 2012-11-30
        • 1970-01-01
        • 2021-08-17
        相关资源
        最近更新 更多