При реализации
describeContents() обычно возвращают значение
0.
Документация говорит, что этот метод описывает виды «специальных объектов», которые содержатся в
Parcelable.
В текущей версии Android API существует только один вид таких объектов –
FileDescriptor.
Для него имеется константа
CONTENTS_FILE_DESCRIPTOR. Метод describeContents() должен вернуть это значение, если в parcelable-классе сериализуется поле типа
FileDescriptor.
Класс
Parcel не использует метод
describeContents() при сериализации и десериализации, а документация умалчивает, зачем для
FileDescriptor создана специальная константа и как она используется системой.
В комментариях к
ответу на StackOverflow высказывается предположение, что это значение используется для запрета передачи
FileDescriptor в интенте при старте
компонентов андроида.
Также следует возвращать не
0, если в сериализуемом классе есть поля типа
Parcelable. В этом случае нужно делегировать вызов
describeContents() в parcelable-поля и использовать
побитовое ИЛИ: