Android开发之序列化接口
来源:互联网 发布:上帝和程序员的段子 编辑:程序博客网 时间:2024/05/22 14:33
1. Serializable接口:Java提供的一个序列化接口,是一个空接口,为对象提供标准的序列化和反序列化操作,实现Serializable接口并声明一个serialVersionUID(Long)就可以实现序列化,其实声明一个serialVersionUID也并不是必需的,也能实现序列化,但这会对反序列化操作会有影响
2. Parcelable接口:Android提供的一个序列化接口
下面演示一下Serializable接口的序列化以及反序列化操作:
序列化操作:
反序列化操作
现在,序列化以及反序列化比较清楚了吧!但是在这里有两点需要特别提一下:① 静态成员变量属于类不属于对象,因此序列化时并不会参与;② 使用transient关键字标记的成员变量也不参与序列化操作
下面讲讲Parcelable接口的序列化:
package com.xiaokai.entity;import android.os.Parcel;import android.os.Parcelable;public class User implements Parcelable{ private int userId; private String password; private boolean isMale; public User(int userId, String password, boolean isMale) { this.userId = userId; this.password = password; this.isMale = isMale; } private User(Parcel in) { userId = in.readInt(); password = in.readString(); isMale = in.readInt() == 1; } //内容描述,几乎所有情况都return 0,除非当前对象中存在文件描述符时,return 1 @Override public int describeContents() { return 0; } //序列化过程 @Override public void writeToParcel(Parcel dest, int flags) { dest.writeInt(userId); dest.writeString(password); dest.writeInt(isMale ? 1 : 0); } public static final Parcelable .Creator<User> CREATOR = new Parcelable.Creator<User>(){ //创建反序列化对象 @Override public User createFromParcel(Parcel source) { return new User(source); } //创建反序列化对象数组 @Override public User[] newArray(int size) { return new User[size]; } };}
最后,比较一下两种序列化:① Serializable是Java中提供的一种序列化接口,使用简单但是开销很大,序列化过程和反序列化过程都需要大量 I/O 操作;② Parcelable是Android中的序列化方式,因此更适合使用在Android平台中,缺点就是使用起来麻烦一点,但是效率很高,这是Android推荐的序列化方式;③ Parcelable主要用在内存序列化上,通过Parcelable将对象序列化到存储设备中或者将对象序列化后通过网络传输也是可以的,但是这个过程会稍显复杂,因此在这两种情况下建议使用Serializable。
- Android开发之序列化接口
- Android 序列化之 Parcelable 接口
- Android开发当中Parcelable接口的使用(序列化)
- android开发中对象的序列化-实现Parcelable接口.
- Android开发篇之对象序列化
- Android 中对象实现序列化之Parcelable接口
- Android序列化之Parcelable接口的用法
- Android序列化-Serializable接口
- android开发-android序列化
- android之序列化
- Android之序列化
- Android之序列化
- Android开发之xml文件的序列化
- android 开发之坑系列_实体序列化问题
- Android开发:使用序列化接口Parcelable、Serializable实现Activity间传递复杂数据类型参数
- Android开发:使用序列化接口Parcelable、Serializable实现Activity间传递复杂数据类型参数
- java序列化之Serializable接口研究
- android Parcelable接口序列化对象
- UI day2 UILabel标签 UITextField文本 UIButton按钮
- oracle中的rownum
- 仿QQ帮助菜单功能
- C语言的函数指针和结构体
- hdu4279 Number
- Android开发之序列化接口
- 虚幻4全部鼠标样式mouse cursors
- UI day 3 UIApplication应用程序的执行顺序 自定义视图 视图控制器
- 从大数据菜鸟走上大师的历程
- Qt的4个图像类QImage/QPixmap/QBitmap/QPicture
- 实习日记
- POJ 3087 Shuffle'm Up(洗牌)
- UI day 4 事件处理(UIEvent) 触摸 晃动 远程控制事件
- 第2章 创建和销毁对象