101

Parcelableのこのメソッドがいつどこで呼び出されるか知っている人はいますか?

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

オーバーライドする必要があります。しかし、それを使って何か役に立つことを考えるべきでしょうか?

4

3 に答える 3

189

ビットマスクの戻り値を作成するために使用することを意図した、 Parcelablecalledで定義された定数があります。CONTENTS_FILE_DESCRIPTORdescribeContents()

API refCONTENTS_FILE_DESCRIPTORの説明は次のとおりです。

describeContents() で使用するビット マスク: 各ビットは、マーシャリング時に特別な意味を持つ可能性があると見なされるオブジェクトの種類を表します。

FileDescriptorつまり、オブジェクトを Parcelableに入れる必要がある場合CONTENTS_FILE_DESCRIPTORは、describeContents() の戻り値として指定する必要があります。つまり、「特別なオブジェクト」(describeContents()の説明) で指定する必要がありますFileDescriptor

このParcelable機能全体が未完成のように見えます (読み取り: 設計が悪い)。ドキュメントには、もう1つの奇妙なことがあります。

Parcelable インターフェースを実装するクラスには、Parcelable.Creator インターフェースを実装するオブジェクトである CREATOR という静的フィールドも必要です。

人間が読める形式で定義されたルールによって多重継承を実装していますか? :-)

C++ プログラマーが設計したようParceableで、ある時点で彼は気付きました: ああ、いまいましい、Java には多重継承はありません... :-)

于 2011-02-06T17:09:11.167 に答える