Parcelable dove / quando è describeContents () utilizzato?
-
28-09-2019 - |
Domanda
Qualcuno sa dove / quando questo metodo di un Parcelable si chiama?
@Override
public int describeContents() {
return 0;
}
E 'da sovrascritto. Ma devo considerare fare qualcosa di utile con esso?
Soluzione
C'è una costante definita Parcelable
chiamato CONTENTS_FILE_DESCRIPTOR
che è destinato ad essere utilizzato in describeContents()
per creare maschera di bit valore restituito.
Descrizione per CONTENTS_FILE_DESCRIPTOR
nel API ref è:
maschere di bit per l'utilizzo con describeContents ():. Ogni bit rappresenta una sorta di oggetto considerato di avere il potenziale significato speciale quando schierò
che in realtà significa: se è necessario mettere oggetto FileDescriptor
in Parcelable si dovrebbe / necessario specificare CONTENTS_FILE_DESCRIPTOR
come valore di ritorno di describeContents (), vale a dire da " oggetto speciale " (nella descrizione di describeContents()
) hanno veramente significa: FileDescriptor
.
Questa intero Parcelable la funzionalità sembra incompiuta (leggi: ha cattivo design). C'è un'altra cosa strana nella documentazione:
classi che implementano l'interfaccia Parcelable deve anche avere un campo statico chiamato CREATOR, che è un oggetto che implementa l'interfaccia Parcelable.Creator
Implementazione ereditarietà multipla da regole definite in forma leggibile? : -)
Sembra C ++ programmatore progettato Parceable
e ad un certo punto si rese conto: Oh, accidenti, non c'è ereditarietà multipla in Java ...: -)
Altri suggerimenti
C'è solo due possibili valori, 0 o CONTENTS_FILE_DESCRIPTOR
se siete alla serializzazione POLO, questo valore deve essere sempre 0, il CONTENTS_FILE_DESCRIPTOR è riservata a ParcelFileDescriptor , che potrebbe serializzare un descrittore di file ( FD) nel sistema di * unix.