用于Parcelable接口的describeContents()的目的

可能重复:
parcelable where / when是describeContents()使用?

实现Parcelable接口的describeContents()函数的目的是什么? 大部分框架代码返回0作为实现。 文档说:“一个位掩码表示由Parcelable编组的特殊对象types的集合。” 有人能解释一下这个function吗(可能是一个例子)

可能发生的是,你的类将有子类,所以在这种情况下,每个孩子都可以以describeContent()不同的值返回,所以你将知道从Parcel创build哪个特定的对象types。 例如像这里 – 在父类( MyParent )中实现MyParent方法的例子:

 //************************************************ // Parcelable methods //************************************************ //need to be overwritten in child classes //MyChild_1 - return 1 and MyChild_2 - return 2 public int describeContents() {return 0;} public void writeToParcel(Parcel out, int flags) { out.writeInt(this.describeContents()); out.writeSerializable(this); } public Parcelable.Creator<MyParent> CREATOR = new Parcelable.Creator<MyParent>() { public MyParent createFromParcel(Parcel in) { int description=in.readInt(); Serializable s=in.readSerializable(); switch(description) { case 1: return (MyChild_1 )s; case 2: return (MyChild_2 )s; default: return (MyParent )s; } } public MyParent[] newArray(int size) { return new MyParent[size]; } }; 

在这种情况下,不需要在子类中实现所有的Parcelable方法 – describeContent()