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