Parcleable详解

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];
    }
};

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值