将 Parcelable 对象的 ArrayList 保存为持久数据?

Posted

技术标签:

【中文标题】将 Parcelable 对象的 ArrayList 保存为持久数据?【英文标题】:Saving ArrayList of Parcelable objects as persistent data? 【发布时间】:2011-10-29 23:39:39 【问题描述】:

我有一个自定义 Parcelable 对象的 ArrayList,我正在尝试将此列表保存到外部/内部数据存储中。这些对象称为 Lectures,每个 Lecture 都包含作业、测试、注释和设置的数组列表。所有这些都实现了 Parcelable。

现在我尝试使用以下方法将其保存到 sd 卡:

for(Lecture l : lectureList)
    oos.writeObject(l);

oos 是 ObjectOutputStream。第一次写入时抛出异常(InvalidDataException?我不记得了)。现在我认为 Parcelable 是 android 自己的 Serializable 实现 - 但在进一步阅读后,似乎 Parcelable 可能不是持久保存对象的途径。这是一个问题,因为我将它用于 saveInstanceState。

我也是

用 Parcelable 实现 Serializable 还是先移除 Parcelable? 用其他方法将我的数据保存到存储中? 或者说它是一次良好的运行并挥动白旗?

【问题讨论】:

【参考方案1】:

以防万一……我最终用 Parcelable 实现了 Serializable,它对于持久化和恢复我的应用程序状态都很好。

【讨论】:

以上是关于将 Parcelable 对象的 ArrayList 保存为持久数据?的主要内容,如果未能解决你的问题,请参考以下文章

将对象从服务发送到活动(无法编组非 Parcelable)

Parcelable 替换字段对象的值?

将 parcelable 对象传递给新活动返回 null

Android中Serializable和Parcelable序列化对象详解

使用 parcelable 将项目存储为共享首选项?

在 Android 中持久化 Parcelable 对象