이 Parcelable 메서드가 언제 어디서 호출 되는지 아는 사람이 있습니까?
@Override
public int describeContents() {
return 0;
}
재정의해야합니다. 하지만 유용한 작업을 고려해야합니까?
답변:
비트 마스크 반환 값을 생성 하는 데 사용되는 Parcelable
called에 정의 된 상수 CONTENTS_FILE_DESCRIPTOR
가 있습니다 describeContents()
.
API 참조CONTENTS_FILE_DESCRIPTOR
에 대한 설명 은 다음과 같습니다.
describeContents ()와 함께 사용하기위한 비트 마스크 : 각 비트는 마샬링 될 때 잠재적으로 특별한 의미가있는 것으로 간주되는 일종의 객체를 나타냅니다.
즉, FileDescriptor
Parcelable 에 객체를 넣어야하는 경우 CONTENTS_FILE_DESCRIPTOR
describeContents ()의 반환 값으로 지정해야합니다 . 즉, " 특수 객체 "( describeContents()
의 설명에서)는 실제로 다음을 의미 FileDescriptor
합니다..
이 전체 Parcelable 기능은 미완성 된 것처럼 보입니다 (읽기 : 잘못된 디자인). 문서에 또 다른 이상한 점이 있습니다.
Parcelable 인터페이스를 구현하는 클래스에는 Parcelable.Creator 인터페이스를 구현하는 객체 인 CREATOR라는 정적 필드도 있어야합니다.
사람이 읽을 수있는 형식으로 정의 된 규칙에 따라 다중 상속을 구현합니까? :-)
C ++ 프로그래머가 설계 한 것 같고 Parceable
어느 시점에서 그는 깨달았습니다. 오, 젠장, Java에는 다중 상속이 없습니다 ... :-)
describeContents()
가능한 값은 0 또는 CONTENTS_FILE_DESCRIPTOR 두 개뿐입니다.
POLO를 직렬화하는 경우이 값은 항상 0이어야하며 CONTENTS_FILE_DESCRIPTOR는 * unix 시스템에서 파일 설명자 (FD)를 직렬화 할 수있는 ParcelFileDescriptor 용으로 예약되어 있습니다.