Android序列化之Parcelable和Serializable的使用详解
Android序列化技术详解 - Parcelable和Serializable的使用详解 序列化是指将对象实例的状态存储到存储媒体(磁盘或者其他介质)的过程。在 Android 开发中,序列化是一种常用的数据存储和传输方式。今天,我们将详细探讨 Android 序列化技术中 Parcelable 和 Serializable 两个接口的使用详解。 序列化和反序列化 序列化是将对象实例的状态存储到存储媒体(磁盘或者其他介质)的过程。在序列化过程中,对象的公共字段和私有字段以及类的名称(包括类所在的程序集)被转换为字节流,然后再把字节流写入数据流。在随后对对象进行反序列化时,将创建出与原对象完全相同的副本。 实现序列化的必要条件 一个对象要实现序列化操作,该类就必须实现了 Serializable 接口或者 Parcelable 接口,其中 Serializable 接口是在 Java 中的序列化抽象类,而 Parcelable 接口则是 Android 中特有的序列化接口。在某些情况下,Parcelable 接口实现的序列化更为高效。 Parcelable 和 Serializable 的区别 Parcelable 和 Serializable 是两个序列化接口,它们的作用是让实现了其中一个接口的类的对象能够被序列化和反序列化。 * Serializable 是 Java 提供的序列化接口,它是一个空的接口,仅标识该类型可序列化的,具体的序列化/反序列化工作由 ObjectInputStream(readObject)/ObjectOutputStream(writeObject)完成,这个过程包含大量的 I/O 操作,使用比较简单,但需要考量性能的影响。使用场景:将对象持久化到存储介质或者通过网络传输。 * Parcelable 接口是 Android 平台下的序列化接口,通常跨进程传递的数据都要正确实现这个接口,比如 Intent,Bitmap 等。Parcelable 实现起来比 Serializable 复杂,但性能较好。使用场景:在内存中实现序列化,例如跨进程传递。 自定义一个类实现 Parcelable 要自定义一个类让其实现 Parcelable,需要经过以下步骤: 1. 实现 Parcelable 接口,并实现接口中的方法。 2. 创建一个 Parcelable 接口内部的接口类型 Creator 的成员,内部需要用到一个带一个 Parcel 参数的构造方法。 例如: ```java public class User implements Parcelable { private int userId; private String userName; private boolean isMan; @Override public int describeContents() { return 0; } @Override public void writeToParcel(Parcel dest, int flags) { dest.writeInt(userId); dest.writeString(userName); dest.writeInt(isMan ? 1 : 0); } protected User(Parcel in) { userId = in.readInt(); userName = in.readString(); isMan = in.readByte() != 0; } public static final Creator<User> CREATOR = new Creator<User>() { @Override public User createFromParcel(Parcel in) { return new User(in); } @Override public User[] newArray(int size) { return new User[size]; } }; } ``` 结论 Android 序列化技术是 Android 开发中的一种常用的数据存储和传输方式。Parcelable 和 Serializable 是两个常用的序列化接口,它们的作用是让实现了其中一个接口的类的对象能够被序列化和反序列化。通过本篇文章,我们了解了序列化和反序列化的概念、实现序列化的必要条件、Parcelable 和 Serializable 的区别,以及自定义一个类实现 Parcelable 的步骤。
- 粉丝: 4
- 资源: 903
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 前端分析-2023071100789
- 前端分析-2023071100789
- 基于springboot的调查问卷管理系统源代码全套技术资料.zip
- MATLAB代码:计及碳排放交易及多种需求响应的微网 电厂日前优化调度 关键词:碳排放交易 需求响应 空调负荷 电动汽车 微网 电厂优化调度 参考文档:计及电动汽车和需求响应的多类电力市场下
- 全国高校计算机能力挑战赛往届真题整理
- 小程序毕业设计项目-音乐播放器
- MATLAB代码:考虑多微网电能互补与需求响应的微网双层优化模型 关键词:多微网 电能互补 需求响应 双层优化 动态定价 能量管理 参考文档:《自编文档》 仿真平台:MATLAB+CPLEX 主要
- 智慧校园后勤管理系统源代码全套技术资料.zip
- MATLAB代码:含多种需求响应及电动汽车的微网 电厂日前优化调度 关键词:需求响应 空调负荷 电动汽车 微网优化调度 电厂调度 仿真平台:MATLAB+CPLEX 主要内容:代码主要做的是一
- BGP路由协议模拟器,网络路由条目实时监控