gpt4 book ai didi

android - Parcelable 接口(interface)的 describeContents() 的用途

转载 作者:IT老高 更新时间:2023-10-28 13:15:40 31 4
gpt4 key购买 nike

Possible Duplicate:
Parcelable where/when is describeContents() used?

实现 Parcelable 接口(interface)的 describeContents() 函数的目的是什么?大多数框架代码返回 0 作为实现。文档说“一个位掩码,指示由 Parcelable 编码的一组特殊对象类型。”有人可以解释一下这个功能吗?(可能有一个例子)

最佳答案

您的类(class)可能会有子类(class),因此在这种情况下,每个 child 都可以返回 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];
}
};

在这种情况下,不需要全部实现 Parcelable子类中的方法 - describeContent() 除外

关于android - Parcelable 接口(interface)的 describeContents() 的用途,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4778834/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com