Хтось знає, де / коли називається цей метод Парцеляції ?
@Override
public int describeContents() {
return 0;
}
Це має бути замінено. Але чи варто мені розглядати щось корисне з цим?
Відповіді:
Існує константа, визначена у Parcelable
викликається, CONTENTS_FILE_DESCRIPTOR
яка призначена для використання у describeContents()
створенні поверненого значення бітової маски.
Опис для посиланняCONTENTS_FILE_DESCRIPTOR
на API :
Бітові маски для використання з descriContents (): кожен біт представляє свого роду об'єкт, який, як вважається, має потенційне особливе значення при маршалінгу.
Що на насправді означає: Якщо вам потрібно помістити FileDescriptor
об'єкт в Parcelable ви повинні / необхідно вказати в CONTENTS_FILE_DESCRIPTOR
якості значення, що повертається describeContents (), тобто по « спеціальному об'єкту » (в describeContents()
описі iS) вони на самому ділі означають: FileDescriptor
.
Ця вся функціональність, що піддається парцеляції, виглядає незавершеною (читайте: має поганий дизайн). У документах є ще одна дивна річ:
Класи, що реалізують інтерфейс Parcelable, також повинні мати статичне поле під назвою CREATOR, яке є об'єктом, що реалізує Parcelable.Creator інтерфейс
Реалізація множинного успадкування за правилами, визначеними у зручній для читання формі? :-)
Здається, програміст на C ++ розробив Parceable
і в якийсь момент він зрозумів: О, блін, у Java немає багаторазового успадкування ... :-)
describeContents()
повинен повертати 0, коли він "не має нічого особливого в цьому" . Що насправді нічого не пояснює. Ваше пояснення набагато чіткіше!
Існує лише два можливих значення: 0 або CONTENTS_FILE_DESCRIPTOR
якщо ви серіалізуєте POLO, це значення завжди має бути 0, CONTENTS_FILE_DESCRIPTOR зарезервовано для ParcelFileDescriptor , який може серіалізувати дескриптор файлів (FD) у системі * unix.