当前位置: 首页 > 面试题库 >

在Parcelable中进行包裹读/写操作时,可变顺序重要吗?

赵才俊
2023-03-14
问题内容

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


 类似资料:
  • 我试图在包中保存对象的ArrayList(列表搁置项),以便下次打开活动时检索它。 (活动从firestore获取信息,我想减少每次打开活动时的读取次数并缩短加载时间)。 但我得到了这个错误信息: “android.os.Bundle”中的putParcelableArrayList(java.lang.String,java.util.ArrayList)不能应用于“(java.lang.Str

  • A very powerful tool of the Emmet toolkit. It takes an abbreviation, expands it and places currently selected content in the last element of generated snippet. If there’s no selection, action will sil

  • 本文向大家介绍使用Python对Excel进行读写操作,包括了使用Python对Excel进行读写操作的使用技巧和注意事项,需要的朋友参考一下 学习Python的过程中,我们会遇到Excel的读写问题。这时,我们可以使用xlwt模块将数据写入Excel表格中,使用xlrd模块从Excel中读取数据。下面我们介绍如何实现使用Python对Excel进行读写操作。 Python版:3.5.2 通过pi

  • 本文向大家介绍java进行文件读写操作详解,包括了java进行文件读写操作详解的使用技巧和注意事项,需要的朋友参考一下 直接上代码,有详细注释,有图解,相信你懂得!    

  • 在资源包中搜索标签时,如何重写Java的顺序?取自单据,默认顺序如下: 但是,我希望通过先获取变体来覆盖此顺序,如下所示: 我定义了一个扩展类的新类,您可以在其中设置父捆绑包,但我不知道该类何时被实例化,以及在中更改语言时会发生什么。有可能以某种方式推翻命令吗?