Parcelable где / когда используется describeContents ()?
кто-нибудь знает, где/когда этот метод Parcelable называется?
@Override
public int describeContents() {
return 0;
}
Он должен быть overriden. Но я должен рассмотреть возможность сделать что-то полезное с этим?
2 ответа:
есть константа, определенная в
Parcelableпод названиемCONTENTS_FILE_DESCRIPTOR, который предназначен для использования вdescribeContents()для создания возвращаемого значения битовой маски.описание
CONTENTS_FILE_DESCRIPTORна API ref - это:битовые маски для использования с describeContents (): каждый бит представляет собой вид объекта, который, как считается, имеет потенциальное особое значение при сортировке.
что на самом деле означает: Если вам нужно поставить
FileDescriptorобъект в Parcelable вас должен / должен указатьCONTENTS_FILE_DESCRIPTORкак возвращаемое значение describeContents (), т. е. по "особый объект "(indescribeContents()'s описание) они реально означают:FileDescriptor.все это Parcelable функциональность выглядит незавершенной (читай: имеет плохой дизайн). Есть еще одна странная вещь в документы:
классы, реализующие интерфейс Parcelable, также должны иметь статическое поле CREATOR, которое является объектом, реализующим Parcelable.Интерфейс создателя
реализации множественного наследования по правилам, определенным в удобочитаемой форме? : -)
похоже, что программист C++ разработан
Parceableи в какой-то момент он понял: черт, нет множественного наследования в Java... : -)
есть только два возможных значения, 0 или CONTENTS_FILE_DESCRIPTOR
Если вы сериализуете POLO, это значение всегда должно быть 0, в CONTENTS_FILE_DESCRIPTOR восстанавливается за ParcelFileDescriptor, который может сериализовать файловый дескриптор (FD) в системе *unix.