在Parcelable中包裹读/写操作时,变量顺序是否重要?

Lal*_*and 5 java serialization android parcelable

我有一个Parcelable类的以下实现:

public class DemoModel implements Parcelable {
    private String para1;
    private int para2;

    public DemoModel(){}

    protected DemoModel(Parcel in) {
        para1 = in.readString();
        para2 = in.readInt();
    }

    @Override
    public void writeToParcel(Parcel parcel, int i) {
        parcel.writeString(para1);
        parcel.writeInt(para2);
    }

    //other methods
}
Run Code Online (Sandbox Code Playgroud)

写入/读取包裹时维持秩序是否重要?为什么?

mil*_*jon 10

是的确如此.写入变量的顺序取决于您,您可以根据需要进行操作,但必须以相同的顺序读取它们.如果订单不同,它会给你运行时崩溃.

为什么?机制是盲目的,所以它相信你能以正确的顺序获得它.主要是为了获得性能优势,因为它不必搜索特定元素.您可以在Parcelable界面中看到,它创建的数组大小包含您放入宗地的多个元素.

public interface Creator<T> {
    /**
     * Create a new array of the Parcelable class.
     * 
     * @param size Size of the array.
     * @return Returns an array of the Parcelable class, with every entry
     * initialized to null.
     */
    public T[] newArray(int size);
}
Run Code Online (Sandbox Code Playgroud)