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.