Parcleable是Android中特有序列化方式,因此更加适合在Android平台上。
序列化的定义:
将对象的状态信息转换为可以存储或传输的形式的过程。在序列化期间,对象将其当前状态写入到临时或持久性存储区。以后,可以通过从存储区中读取或反序列化对象的状态,重新创建该对象。Parcleable的缺点:使用起来比较麻烦
Parcleable优点:效率高
Parcleable使用场景:内存序列化
Serializable的使用场景:对象序列化到存储设备中、在网络中传输等
public class User implements Parcelable {public String userName; public int userAge; public boolean isMale; /** * 从序列化后的对象中创建原始对象 * @param in */ private User(Parcel in){ userName = in.readString(); userAge = in.readInt(); isMale = in.readInt()==1; } /** * 返回当前对象的内容描述,如果含有文件描述,返回1(常量CONTENTS_FILE_DESCRIPTOR),否则返回0 * @return */ @Override public int describeContents() { return 0; } /** * 该方法实现序列化 * @param dest * @param flags 有两个值0(基本上都是0)/1(常量PARCELABLE_WRITE_RETURN_VALUE,表示当前对象需要作为返回值返回,不能立即释放对象) */ @Override public void writeToParcel(Parcel dest, int flags) { dest.writeInt(userAge); dest.writeString(userName); dest.writeInt(isMale ? 1 : 0); } public static final Parcelable.Creator<User> CREATOR = new Parcelable.Creator<User>(){ /** * 从序列化的对象创建原始对象 * @param source 序列化后的对象 * * @return */ @Override public User createFromParcel(Parcel source) { return new User(source); } /** * 创建指定长度的原始数组 * @param size 数组的大小 * @return */ @Override public User[] newArray(int size) { return new User[size]; } };
}