实现Parcelable接口的describeContents()函数的目的是什么?大多数框架代码返回0作为实现.文档说"一个位掩码,指示由Parcelable编组的特殊对象类型集." 有人可以解释这个功能.(可能有一个例子)
Bar*_*ica 10
可能会发生您的类将具有子类,因此在这种情况下,每个子类都可以返回describeContent()不同的值,因此您将知道要从哪个特定对象类型创建Parcel.例如像这里 - Parcelable在父类(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];
}
};
Run Code Online (Sandbox Code Playgroud)
在这种情况下,不需要Parcelable在子类中实现所有方法 - 除外describeContent()
| 归档时间: |
|
| 查看次数: |
26010 次 |
| 最近记录: |