有人知道Parcelable的此方法在哪里/何时被调用吗?
@Override
public int describeContents() {
return 0;
}
必须被覆盖。但是我应该考虑做些有用的事情吗?
Parcelable
中定义了一个称为CONTENTS_FILE_DESCRIPTOR
的常量,该常量将在describeContents()
中用于创建位掩码返回值。
CONTENTS_FILE_DESCRIPTOR
中对API ref的描述是:
与describeContents()一起使用的位掩码:每个位代表一种被编组后被认为具有潜在特殊意义的对象。
这实际上意味着:如果需要将FileDescriptor
对象放入Parcelable中,则应该/必须将CONTENTS_FILE_DESCRIPTOR
指定为describeContents()的返回值,即通过“ 特殊对象”(在describeContents()
的描述),它们的真正含义是:FileDescriptor
。
整个Parcelable功能似乎未完成(阅读:设计不良)。文档中还有另外一件奇怪的事情:
实现Parcelable接口的类还必须具有称为CREATOR的静态字段,该字段是实现Parcelable.Creator接口的对象
通过以人类可读形式定义的规则实现多重继承? :-)
似乎是C ++程序员设计的Parceable
,在某种程度上他意识到:哦,该死,Java中没有多重继承...:-)
只有两个可能的值,0或CONTENTS_FILE_DESCRIPTOR
如果要序列化POLO,则此值应始终为0,CONTENTS_FILE_DESCRIPTOR是为ParcelFileDescriptor保留的,可以在* unix系统中序列化文件描述符(FD)。