我有一个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
}

在写/读包裹时保持秩序重要吗?又为什么呢?

最佳答案

是的,它是。写入变量的顺序由您决定,您可以根据需要进行操作,但是必须以相同的顺序读取它们。如果顺序不同,它将给您运行时崩溃。

为什么? 机制是盲目的,因此它信任您以正确的顺序获取它。
主要是为了提高性能,因为它不必搜索特定的元素。
您可以在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);
}

关于java - 在Parcelable中进行包裹读/写操作时,可变顺序是否重要?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43800772/

10-12 04:03