Parcelableのこのメソッドがどこで/いつ呼び出されるかを誰もが知っていますか?
@Override
public int describeContents() {
return 0;
}
オーバーライドする必要があります。しかし、それで何か役に立つことを検討する必要がありますか?
Parcelable
には_CONTENTS_FILE_DESCRIPTOR
_と呼ばれる定数が定義されており、describeContents()
でビットマスクの戻り値を作成するために使用されます。
API ref の_CONTENTS_FILE_DESCRIPTOR
_の説明は次のとおりです。
DescribeContents()で使用するビットマスク:各ビットは、マーシャリングされたときに潜在的な特別な重要性があると見なされるオブジェクトの種類を表します。
つまり、FileDescriptor
オブジェクトをParcelableに配置する必要がある場合、describeContents()の戻り値として_CONTENTS_FILE_DESCRIPTOR
_を指定する必要があります(つまり、 "special object) "(describeContents()
の説明で)本当に意味するのは、FileDescriptor
です。
この全体Parcelable機能は未完成のように見えます(読み取り:デザインが悪い)。ドキュメントにはもう1つの奇妙なことがあります。
Parcelableインターフェースを実装するクラスには、CREATORという静的フィールドも必要です。これは、Parcelable.Creatorインターフェースを実装するオブジェクトです。
人間が読める形式で定義されたルールによる多重継承を実装していますか? :-)
C++プログラマーがParceable
を設計し、ある時点で彼が気付いたようです。ああ、いまいましい、Javaには多重継承はありません... :-)
0またはCONTENTS_FILE_DESCRIPTORの2つの値のみが可能です
pOLOをシリアル化する場合、この値は常に0である必要があります。CONTENTS_FILE_DESCRIPTORは ParcelFileDescriptor のために予約されており、* unixシステムでファイル記述子(FD)をシリアル化できます。