Risposte:
C'è una costante definita in Parcelablechiamato CONTENTS_FILE_DESCRIPTORche deve essere utilizzata describeContents()per creare il valore di ritorno della maschera di bit.
La descrizione per CONTENTS_FILE_DESCRIPTORnel 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 FileDescriptoroggetto in Parcelable si dovrebbe / necessario specificare CONTENTS_FILE_DESCRIPTORcome 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 Parceablee 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.