2010-11-02 3 views

ответ

158

Существует константа, определенная в Parcelable под названием CONTENTS_FILE_DESCRIPTOR, которая предназначена для использования в describeContents() для создания возвращаемого значения битмаски.

Описание для CONTENTS_FILE_DESCRIPTOR в API ref является:

Битовые маски для использования с describeContents(): каждый бит представляет собой вид объекта, рассматриваемого иметь потенциальное особое значение, когда ранжированы.

Что на самом деле означает: Если вам нужно поставить FileDescriptor объект в Parcelable вы должны/необходимо указать CONTENTS_FILE_DESCRIPTOR в качестве возвращаемого значения describeContents(), то есть на «специальный объект» (в описании describeContents() «s), они на самом деле средний: FileDescriptor.

Все это Parcelable Функциональность выглядит незавершенной (читай: имеет плохую конструкцию). Существует еще одна странная вещь в документации:

Классы, реализующие интерфейс Parcelable также должен иметь статическое поле с именем творца, который является объектом, реализующий интерфейс Parcelable.Creator

Реализация множественного наследования по правила, определенные в удобочитаемой форме человека? :-)

Похоже, C++ программист разработан Parceable и в какой-то момент он понял: О, черт, нет множественного наследования в Java ... :-)

+1

Спасибо за подробное объяснение. Я нашел ваш ответ после того, как его разочаровал [этот учебник] (http://www.app-solut.com/blog/2011/05/using-self-defined-parcelable-objects-during-an-android-aidl-rpc -ipc-call /), утверждающий, что 'describeContents()' должен возвращать 0 всякий раз, когда он * "ничего особенного не имеет" *. Что на самом деле ничего не объясняет. Ваше объяснение гораздо яснее! – WebViewer

+0

Что вы подразумеваете под «поместить объект FileDescriptor в Parcelable», я не получаю его, потому что FileDescriptor не реализует интерфейс Parcelable. – Leo

+1

@LeoLink android.os.ParcelFileDescriptor – Ognyan

1

Существует только два возможных значений, 0 или CONTENTS_FILE_DESCRIPTOR

если вы сериализации ПОЛО, это значение должно всегда быть 0, CONTENTS_FILE_DESCRIPTOR восстанавливается для ParcelFileDescriptor, который может сериализовать дескриптор файла (FD) в системе * UNIX.

Смежные вопросы