Risposte:
C'è una costante definita in Parcelable
chiamato CONTENTS_FILE_DESCRIPTOR
che deve essere utilizzata describeContents()
per creare il valore di ritorno della maschera di bit.
La descrizione per CONTENTS_FILE_DESCRIPTOR
nel riferimento API è:
Maschere di bit da utilizzare con descrivereContents (): ogni bit rappresenta un tipo di oggetto considerato avere un potenziale significato speciale quando viene eseguito il marshalling.
Che in realtà significa: se è necessario mettere FileDescriptor
oggetto in Parcelable si dovrebbe / necessario specificare CONTENTS_FILE_DESCRIPTOR
come valore di ritorno di describeContents (), vale a dire da " oggetto speciale " (nella describeContents()
descrizione 's) che veramente dire: FileDescriptor
.
L'intera funzionalità di Parcelable sembra incompleta (leggi: ha un cattivo design). C'è un'altra cosa strana nei documenti:
Le classi che implementano l'interfaccia Parcelable devono anche avere un campo statico chiamato CREATOR, che è un oggetto che implementa l'interfaccia Parcelable.Creator
Implementazione dell'ereditarietà multipla mediante regole definite in forma leggibile dall'uomo? :-)
Sembra che il programmatore C ++ abbia progettato Parceable
e ad un certo punto si è reso conto: Oh, dannazione, non esiste un'ereditarietà multipla in Java ... :-)
describeContents()
dovrebbe restituire 0 ogni volta che "non ha niente di speciale" . Il che non spiega davvero nulla. La tua spiegazione è molto più chiara!
Sono disponibili solo due valori possibili, 0 o CONTENTS_FILE_DESCRIPTOR
se stai serializzando POLO, questo valore dovrebbe sempre essere 0, CONTENTS_FILE_DESCRIPTOR è riservato a ParcelFileDescriptor , che potrebbe serializzare un descrittore di file (FD) nel sistema * unix.