parcelable where / when是describeContents()使用?

有没有人知道这个Parcelable的方法在哪里/何时被调用?

@Override public int describeContents() { return 0; } 

它必须被覆盖。 但是,我应该考虑做一些有用的东西吗?

Parcelable定义了一个名为CONTENTS_FILE_DESCRIPTOR Parcelable ,用于describeContents()创build位掩码返回值。

API参考中 CONTENTS_FILE_DESCRIPTOR描述是:

用于describeContents()的位掩码:每个位代表一种在编组时被认为具有潜在特殊意义的对象。

这意味着:如果需要将FileDescriptor对象放入Parcelable中,您应该/必须指定CONTENTS_FILE_DESCRIPTOR作为describeContents()的返回值,即通过“ 特殊对象 ”(在describeContents()的描述中)来指定: FileDescriptor

这整个Parcelablefunction看起来没有完成(阅读:有坏devise)。 文档中还有一件奇怪的事情:

实现Parcelable接口的类还必须有一个名为CREATOR的静态字段,它是实现Parcelable.Creator接口的对象

通过以可读forms定义的规则实现多重inheritance? 🙂

看起来像C ++程序员devise的Parceable并在某个时候,他意识到:哦,该死的,Java中没有多重inheritance… 🙂

只有两个可能的值,0或CONTENTS_FILE_DESCRIPTOR

如果您正在序列化POLO,则此值应始终为0,而​​CONTENTS_FILE_DESCRIPTOR则反转为ParcelFileDescriptor ,此序列化可在* unix系统中序列化文件描述符(FD)。