Est-ce que quelqu'un sait où / quand cette méthode d'un Parcelable est appelée?
@Override
public int describeContents() {
return 0;
}
Il doit être annulé. Mais devrais-je envisager d'en faire quelque chose d'utile?
Réponses:
Il existe une constante définie dans Parcelable
called CONTENTS_FILE_DESCRIPTOR
qui est destinée à être utilisée describeContents()
pour créer une valeur de retour de masque de bits.
La description de CONTENTS_FILE_DESCRIPTOR
la référence API est:
Masques de bits à utiliser avec describeContents (): chaque bit représente un type d'objet considéré comme ayant une signification spéciale potentielle lorsqu'il est rassemblé.
Ce qui signifie vraiment: Si vous avez besoin de mettre l' FileDescriptor
objet en Parcelable vous devriez / devez spécifier CONTENTS_FILE_DESCRIPTOR
que la valeur de retour de describeContents (), soit par « objet spécial » (dans describeContents()
la description) ils ont vraiment moyenne: FileDescriptor
.
Toute cette fonctionnalité Parcelable semble inachevée (lire: a une mauvaise conception). Il y a une autre chose étrange dans la documentation:
Les classes implémentant l'interface Parcelable doivent également avoir un champ statique appelé CREATOR, qui est un objet implémentant l'interface Parcelable.Creator
Mettre en œuvre l'héritage multiple par des règles définies sous une forme lisible par l'homme? :-)
Il semble que le programmeur C ++ ait été conçu Parceable
et à un moment donné, il s'est rendu compte: Oh, putain, il n'y a pas d'héritage multiple en Java ... :-)
describeContents()
devrait renvoyer 0 chaque fois qu'il "n'a rien de spécial" . Ce qui n'explique vraiment rien. Votre explication est tellement plus claire!
Il n'y a que deux valeurs possibles, 0 ou CONTENTS_FILE_DESCRIPTOR
si vous sérialisez POLO, cette valeur doit toujours être 0, le CONTENTS_FILE_DESCRIPTOR est réservé à ParcelFileDescriptor , qui pourrait sérialiser un descripteur de fichier (FD) dans un système * unix.