2010-11-02 7 views

Respuesta

158

Hay una constante definida en Parcelable llamada CONTENTS_FILE_DESCRIPTOR que se debe usar en describeContents() para crear el valor de retorno de la máscara de bits.

Descripción de CONTENTS_FILE_DESCRIPTOR en el API ref es:

máscaras de bits para su uso con describeContents(): cada bit representa una especie de objeto considera que tienen potencial importancia especial 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 describeContents() 's descripción) que realmente media: FileDescriptor.

Todo Parcelable funcionalidad parece inacabada (léase: tiene un mal diseño). Hay otra cosa extraña en la documentación:

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

La implementación de la herencia múltiple por reglas definidas en forma humana legible? :-)

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

+1

Gracias por esta explicación detallada. Encontré tu respuesta después de haber sido frustrado por [este tutorial] (http://www.app-solut.com/blog/2011/05/using-self-defined-parcelable-objects-during-an-android-aidl-rpc -ipc-call /) afirmando que 'describeContents()' debe devolver 0 siempre que * "no tenga nada de especial" *. Lo cual realmente no explica nada. ¡Tu explicación es mucho más clara! – WebViewer

+0

¿Qué quiere decir con "poner objeto FileDescriptor en Parcelable", no lo entiendo porque FileDescriptor no implementa la interfaz Parcelable. – Leo

+1

@LeoLink android.os.ParcelFileDescriptor – Ognyan

1

Sólo hay dos valores posibles, 0 o CONTENTS_FILE_DESCRIPTOR

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

Cuestiones relacionadas