Antworten:
In call ist eine Konstante definiert Parcelable
, CONTENTS_FILE_DESCRIPTOR
die describeContents()
zum Erstellen eines Bitmasken-Rückgabewerts verwendet werden soll.
Beschreibung für CONTENTS_FILE_DESCRIPTOR
in der API-Referenz lautet:
Bitmasken zur Verwendung mit descriptionContents (): Jedes Bit stellt eine Art Objekt dar, das beim Marshalling eine potenzielle besondere Bedeutung hat.
Was wirklich bedeutet: Wenn Sie ein FileDescriptor
Objekt in Parcelable einfügen müssen, sollten / müssen Sie CONTENTS_FILE_DESCRIPTOR
als Rückgabewert von descriptionContents () angeben , dh mit " Spezialobjekt " (in describeContents()
der Beschreibung) meinen sie wirklich : FileDescriptor
.
Diese gesamte Parcelable- Funktionalität sieht unvollendet aus (lesen Sie: hat schlechtes Design). Es gibt noch eine andere seltsame Sache in den Dokumenten:
Klassen, die die Parcelable-Schnittstelle implementieren, müssen auch ein statisches Feld namens CREATOR haben, ein Objekt, das die Parcelable.Creator-Schnittstelle implementiert
Mehrfachvererbung durch Regeln implementieren, die in lesbarer Form definiert sind? :-)
Es scheint, als hätte ein C ++ - Programmierer entworfen Parceable
und irgendwann wurde ihm klar: Oh, verdammt, es gibt keine Mehrfachvererbung in Java ... :-)
describeContents()
0 zurückgegeben werden sollte, wenn es "nichts Besonderes an sich hat" . Was eigentlich nichts erklärt. Ihre Erklärung ist so viel klarer!
Es gibt nur zwei mögliche Werte, 0 oder CONTENTS_FILE_DESCRIPTOR
Wenn Sie POLO serialisieren, sollte dieser Wert immer 0 sein. Der CONTENTS_FILE_DESCRIPTOR ist für ParcelFileDescriptor reserviert , wodurch ein File Descriptor (FD) im * Unix-System serialisiert werden kann.