Исправлено, где/когда используется descriptionContents()?
Кто-нибудь знает, где/когда вызывается этот метод Parcelable?
@Override
public int describeContents() {
return 0;
}
Это нужно переоценить. Но стоит ли мне подумать над чем-то полезным?
Ответ 1
В Parcelable существует константа, называемая CONTENTS_FILE_DESCRIPTOR, которая предназначена для использования в describeContents() для создания возвращаемого значения битмаски.
Бит-маски для использования с describeContents(): каждый бит представляет собой объект, который считается потенциально значимым при сортировке.
Что действительно означает: если вам нужно поместить объект FileDescriptor в Parcelable, вы должны/должны указать CONTENTS_FILE_DESCRIPTOR как возвращаемое значение для описанияContents(), то есть с помощью < специального объекта "(в describeContents() description) они действительно означают: FileDescriptor.
Вся эта функциональность Parcelable выглядит незавершенной (читай: имеет плохой дизайн). В документах есть еще одна странная вещь:
Классы, реализующие интерфейс Parcelable, также должны иметь статическое поле CREATOR, которое представляет собой объект, реализующий интерфейс Parcelable.Creator
Реализация множественного наследования по правилам, определенным в читаемой человеком форме?: -)
Похоже, программист на С++ разработал Parceable, и в какой-то момент он понял: "Ах, черт возьми, в Java нет множественного наследования...: -)
Ответ 2
Существует только два возможных значения: 0 или CONTENTS_FILE_DESCRIPTOR
если вы сериализуете POLO, это значение всегда должно быть 0, CONTENTS_FILE_DESCRIPTOR зарезервирован для ParcelFileDescriptor, который может сериализовать дескриптор файла (FD) в * unix системе.