Parcelable ¿dónde / cuándo se utiliza describeContents ()?


¿Alguien sabe dónde/cuándo se llama este método de un Parcelable?

@Override
public int describeContents() {
  return 0;
}

Tiene que ser anulado. ¿Pero debería considerar hacer algo útil con él?

Author: ישו אוהב אותך, 2010-11-02

2 answers

Hay una constante definida en Parcelable llamada CONTENTS_FILE_DESCRIPTOR que se usa en describeContents() para crear un valor de retorno de máscara de bits.

Descripción para CONTENTS_FILE_DESCRIPTOR en 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 marshalled.

Lo que realmente significa: Si necesita poner FileDescriptor objeto en Parcelable debe / debe especificar CONTENTS_FILE_DESCRIPTOR como valor devuelto de describeContents (), i.e. by "special object" (in describeContents()'s description) they really mean: FileDescriptor.

Toda esta funcionalidad Parcelable parece inacabada (léase: tiene 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 el Parcelable.Interfaz del creador

Implementación de la herencia múltiple por reglas ¿definido en forma legible por humanos? :-)

Parece que el programador de C++ diseñó Parceable y en algún momento se dio cuenta: Oh, maldición, no hay herencia múltiple en Java... :-)

 169
Author: Ognyan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-09-07 18:46:00

Solo hay dos valores posibles, 0 o CONTENTS_FILE_DESCRIPTOR

Si está serializando POLO, este valor siempre debe ser 0, el CONTENTS_FILE_DESCRIPTOR se invierte para ParcelFileDescriptor, que podría serializar un descriptor de archivo(FD) en el sistema *unix.

 2
Author: bowman han,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-08-31 06:28:12