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

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

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

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