Android 源码分析

Android源码(8) --- Binder(2) 序列化

2017-07-31  本文已影响57人  jfson_土豆

Android 开发的时候,在对数据进行持久化的时候,或者数据传递的时候会用到序列化,这时候可以对当前数据类实现Serializable或者Parcelable接口。尤其是进程间通信时,传递数据需要对对象进行序列化。

序列化

使用场景

Serializable和Parcelable 区别

使用

public class UserModel implements Serializable{
    private static final long serialVersionUID = 123456789L;
    public String userName;
    public int userId;

    public UserModel(String userName, int userId) {
        this.userName = userName;
        this.userId = userId;
    }
}
public class UserModel implements Parcelable {
    private String name;
    private int id;

    public UserModel(String name, int id) {
        this.name = name;
        this.id = id;
    }

    /**
     * 序列化
     */
    @Override
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeString(name);
        dest.writeInt(id);
    }

    @Override
    public int describeContents() {
        // 大都返回0即可
        return 0;
    }

    /**
     * 反序列化
     */
    public static final Creator<UserModel> CREATOR = new Creator<UserModel>() {
        @Override
        public UserModel createFromParcel(Parcel in) {
            // 反序列对象
            return new UserModel(in);
        }

        @Override
        public UserModel[] newArray(int size) {
            // 反序列数组
            return new UserModel[size];
        }
    };

    /**
     * 使用反序列化得到的 Parcel 构造对象
     */
    protected UserModel(Parcel in) {
        name = in.readString();
        id = in.readInt();
    }
}

总结

上一篇 下一篇

猜你喜欢

热点阅读