Parcel.writeSerializable应该用在Parcelable.writeToParcel中吗?

时间:2017-01-28 06:55:30

标签: android

我是Android的新手,我在Parcelable界面周围遇到了一些麻烦。

我最终发现了这个: https://stackoverflow.com/a/2141166/6647053

上述答案中的观点是,当一个对象传递给一个活动时,这个:

intent.putExtra("object", parcelableObject);

比这更好:

intent.putExtra("object", serializableObject);

我的问题是: 在Parcelable中使用Parcel的读/写Serializable方法是否有任何性能优势(而不是只使用带有intent.putExtra的可序列化对象)?为什么/为什么不呢?

示例:

public class MyParcelable implements Serializable, Parcelable {

    /* Some Custom Object Stuff Here */

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

    @Override
    public void writeToParcel(Parcel parcel, int flags) {
        parcel.writeSerializable(this);
    }

    public static final Parcelable.Creator<MyParcelable> CREATOR = new Parcelable.Creator<MyParcelable>() {
        public MyParcelable createFromParcel(Parcel parcel) {
            return parcel.readSerializable();
        }

        public MyParcelable[] newArray(int size) {
            return new MyParcelable[size];
        }
    };
}

1 个答案:

答案 0 :(得分:1)

写这个没有任何好处:parceling和序列化一样慢。

在普通Java中,Externalizable的效果可能优于Serializable,因为您提供了自己的readExternal(ObjectInput in)writeObject(ObjectOutput out),您需要在其中手动序列化字段而不是依靠JVM进行内省并自动为您完成。 Android的Parcelable也有类似用途。