美文网首页
android序列化

android序列化

作者: 土肥圆的诺诺 | 来源:发表于2019-01-09 21:56 被阅读0次
每天学习一点点
Parcelable 和 Serializable 有什么用,它们有什么差别?实现 Parcelable大致流程是什么?

其实在序列化这块,其实我个人还是比较喜欢用Serializable,因为简单暴力,实现Serializable,然后回车生成serialVersionUID完事。
但是Parcelable就比较麻烦, 实现Parcelable接口,覆写describeContents方法,默认返回0。覆写writeToParcel(Parcel dest, int flags)方法,指定写入Parcel类的数据。 创建Parcelable.Creator静态对象,覆写方createFromParcel(Parcel in)与newArray(int size)。

还好爱好偷懒的程序员,写了Parcelable的插件,可以一键生成。比如android parcelable code generator。

public class ParcelableDemo implements Parcelable {
    private String name;

    @Override
    public int describeContents() {
        return 0;
    }

    @Override
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeString(this.name);
    }

    public ParcelableDemo() {
    }

    protected ParcelableDemo(Parcel in) {
        this.name = in.readString();
    }

    public static final Creator<ParcelableDemo> CREATOR = new Creator<ParcelableDemo>() {
        @Override
        public ParcelableDemo createFromParcel(Parcel source) {
            return new ParcelableDemo(source);
        }

        @Override
        public ParcelableDemo[] newArray(int size) {
            return new ParcelableDemo[size];
        }
    };
}

其实Parcelable 和 Serializable 虽然都是实现实例化,Serializable使用IO读写存储在硬盘上,消耗资源比较严重。而Parcelable实现原理是在内存中建立一块共享数据块,序列化和反序列化均是操作这一块的数据。内存的读写速度肯定优于硬盘读写速度,所以Parcelable序列化方式性能上要优于Serializable方式很多。如果我们要序列化的对象要保存在硬盘SD卡上我们只能使用Serializable。但是如果是为了页面之间传递对象,我还是建议Parcelable。

相关文章

网友评论

      本文标题:android序列化

      本文链接:https://www.haomeiwen.com/subject/msrnrqtx.html