Android - 可序列化接口的问题

Posted

技术标签:

【中文标题】Android - 可序列化接口的问题【英文标题】:Android - Problem with the Serializable interface 【发布时间】:2011-11-23 13:38:45 【问题描述】:

我一直在使用Serializable 接口将对象从一个活动传递到另一个活动。我在发送方使用putExtra,在接收方使用getSerializable。一切正常,但我(第一次)收到以下错误报告:

java.lang.RuntimeException: Parcelable 读取时遇到 IOException 一个可序列化的对象

我不明白为什么会产生这个异常,因为我使用的是getSerializable 而不是getParcelable

我知道我应该实现 Parcelable 接口,因为它是专为 android 设计的(这就是我最终要做的),但我想了解为什么会出现此错误。

谢谢!

【问题讨论】:

【参考方案1】:

此错误中提到了Parcelable,因为您从一个Activity 发送到另一个Intent 内部有一个Bundle,而这个BundleParcelable。当您调用 Intent.putExtra() 时,此额外内容将添加到内部 Bundle。当 Intent 在活动之间传递时,它的 Bundle 将转换为字节数组,您的 Serializable 对象也是如此。

但是我不知道为什么会出现这个错误。可能是因为writeObject()/readObject() 实现中的一些错误。

【讨论】:

以上是关于Android - 可序列化接口的问题的主要内容,如果未能解决你的问题,请参考以下文章

Android :安卓学习笔记之 通过Intent传递类对象(实现Serializable和Parcelable接口)

android 怎么将一个类中的arraylist<bitmap>序列化。

Android可序列化问题

Android:Parcelable 和 Serializable 之间的区别?

使用 GSON 序列化到 JSON 的类是不是应该实现可序列化接口

Android Parcelable接口的使用/序列化数据