首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >可打包接口的describeContents()的用途

可打包接口的describeContents()的用途
EN

Stack Overflow用户
提问于 2011-01-24 13:04:28
回答 1查看 27.6K关注 0票数 69

可能重复:

Parcelable where/when is describeContents() used?

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-01-24 13:50:57

您的类可能会有子类,因此本例中的每个子类都可以在describeContent()中返回不同的值,这样您就可以知道要从Parcel创建哪种特定的对象类型。例如,在父类(MyParent)中实现Parcelable方法的示例如下:

//************************************************
// 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()

票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4778834

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档