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