Java Android 面试题

Android序列化和反序列化

2018-09-21  本文已影响136人  erki_stwee
kawayi.png

Parcelable和Serializable有什么用,它们有什么差别?

Parcelable和Serializable都可以用于序列化。只要实现了其中一个都可以用于Intent和Binder中传输数据。
差异:

自定义一个类让其实现Parcelable,大致流程是什么?

writeToParcel(Parcel dest, int flags) 序列化 --->TestParcelable(Parcel in)反序列化

public class TestParcelable implements Parcelable {

    public String name;
    private int age;
    private TestSerializable testSerializable;

    public TestParcelable(String name, int age, TestSerializable testSerializable) {
        this.name = name;
        this.age = age;
        this.testSerializable = testSerializable;
    }

    protected TestParcelable(Parcel in) {
        name = in.readString();
        age = in.readInt();
        testSerializable = (TestSerializable) in.readSerializable();
    }

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

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

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

    @Override
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeString(name);
        dest.writeInt(age);
        dest.writeSerializable(testSerializable);
    }
}
上一篇 下一篇

猜你喜欢

热点阅读