Android Interview Review

@AndroidSobes Нравится 2 1 500

Популярные вопросы и ответы с собеседований на Android-разработчика.
Канал для Java-разработчиков @JavaSobes
Связаться с нами @SobesAdmin
https://itsobes.ru
Гео и язык канала
Россия, Русский
Категория
Образование


Написать автору
Гео канала
Россия
Язык канала
Русский
Категория
Образование
Добавлен в индекс
18.03.2019 05:12
27 Aug, 18:01 (108 дней назад)
Когда Parcelable.describeContents() должен возвращать не 0?

При реализации describeContents() обычно возвращают значение 0. Документация говорит, что этот метод описывает виды «специальных объектов», которые содержатся в Parcelable.

В текущей версии Android API существует только один вид таких объектов – FileDescriptor.
Для него имеется константа CONTENTS_FILE_DESCRIPTOR. Метод describeContents() должен вернуть это значение, если в parcelable-классе сериализуется поле типа FileDescriptor.

Класс Parcel не использует метод describeContents() при сериализации и десериализации, а документация умалчивает, зачем для FileDescriptor создана специальная константа и как она используется системой.
В комментариях к ответу на StackOverflow высказывается предположение, что это значение используется для запрета передачи FileDescriptor в интенте при старте компонентов андроида.

Также следует возвращать не 0, если в сериализуемом классе есть поля типа Parcelable. В этом случае нужно делегировать вызов describeContents() в parcelable-поля и использовать побитовое ИЛИ:

#Parcelable