序列化是对象数据传输过程的重要环境,主要目的在于将对象转换为可传输对象,只要是能将对象转换后的数据传递给接收方,并且接收方可以根据一定规则,重新构造出原始对象的方法,都可以称为序列化。
Android里使用较为广泛的序列化方法主要有:Serializable、Parcelable、JSON
主要序列化手段
- Serializable:
- Java提供的标准序列化接口,在Android场景下性能不佳。
- 使用反射机制,序列化和反序列化速度较慢
- 可以将对象序列化为字节流
- Parcelable:
- Android特有的序列化方式,专门针对Android进行了优化。
- 将对象分解为原始数据类型,主要讲要传输的对象,写入到Parcel对象进行传递。
- JSON:
- 序列化灵活且与平台无关,适合网络传输或在应用组件间传递结构化数据。
Serializable
优点
- 简单易用:仅需声明实现 Serializable 接口即可,JVM 会自动处理序列化过程(反射)。
- 自动处理:所有未标记为 transient 的成员变量都将被自动序列化,无需关心具体的序列化细节。
缺点
- 性能较低:
- Serializable 使用反射来实现对象的序列化
- 反射会导致比 Parcelable 更高的 CPU、内存消耗,尤其在复杂对象或有大量对象需要序列化时。
使用
实现 Serializable 接口通常不需要编写额外的序列化代码,除非需要处理特定的序列化逻辑:
Parcelable
优点
- 高效:
- Parcelable 专为 Android 设计,特别适合在内存中快速传递数据。
- 灵活:
- 可以自定义数据的序列化和反序列化方式,控制哪些成员被序列化以及如何序列化,减少了不必要的开销。
缺点
- 实现复杂:
- 实现 Parcelable 接口比实现 Serializable 接口复杂,需要手动实现序列化逻辑。
- 类成员写入Parcel和从Parcel读出顺序必须保持一致。
- 每次对象的数据结构发生变化时,都需要重新修改
Parcelable的实现,否则会导致反序列化失败。
使用
实现 Parcelable 需要重写
writeToParcel 方法来定义数据写入逻辑,同时提供一个 CREATOR 字段来创建对象和对象数组:Json序列化
优点
- 易于理解:
- JSON 是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。
- 灵活性高:
- JSON 格式存储为文本,可以轻松转换为任何需要的对象,不受语言或平台的限制。
缺点
- 性能差:
- 相比 Parcelable,JSON 文本解析和生成涉及字符串处理,性能较低。
实现细节:
使用 Gson 等库来处理 JSON 数据的序列化和反序列化:
参考、推荐
- Author:CoderWdd
- URL:https://www.wuinsights.top//article/01HVE17HPPR7G805N2CJMWXFPW
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!
Relate Posts