¿Alguien sabe dónde / cuándo se llama este método de Parcelable ?
@Override
public int describeContents() {
return 0;
}
Tiene que anularse. ¿Pero debería considerar hacer algo útil con él?
Respuestas:
Hay una constante definida en la Parcelable
llamada CONTENTS_FILE_DESCRIPTOR
que está destinada a ser utilizada describeContents()
para crear un valor de retorno de máscara de bits.
La descripción de CONTENTS_FILE_DESCRIPTOR
la API ref es:
Máscaras de bits para usar con describeContents (): cada bit representa un tipo de objeto que se considera que tiene un significado especial potencial cuando se calcula.
Que en realidad significa: Si usted necesita poner FileDescriptor
objeto en parcelable debe / debe especificar CONTENTS_FILE_DESCRIPTOR
como valor de retorno de describeContents (), es decir, por " objeto especial " (en la describeContents()
descripción 's) que realmente quieren decir: FileDescriptor
.
Toda esta funcionalidad Parcelable parece inacabada (léase: tiene un mal diseño). Hay otra cosa extraña en los documentos:
Las clases que implementan la interfaz Parcelable también deben tener un campo estático llamado CREATOR, que es un objeto que implementa la interfaz Parcelable.Creator
¿Implementando herencia múltiple mediante reglas definidas en forma legible por humanos? :-)
Parece que el programador de C ++ lo diseñó Parceable
y en algún momento se dio cuenta: Oh, maldita sea, no hay herencia múltiple en Java ... :-)
describeContents()
debería devolver 0 siempre que "no tenga nada especial" . Lo que realmente no explica nada. ¡Tu explicación es mucho más clara!
Solo hay dos valores posibles, 0 o CONTENTS_FILE_DESCRIPTOR
si está serializando POLO, este valor siempre debe ser 0, el CONTENTS_FILE_DESCRIPTOR está reservado para ParcelFileDescriptor , que podría serializar un Descriptor de archivo (FD) en un sistema * unix.