2010-11-02 17 views

Trả lời

158

Có một hằng số được xác định trong Parcelable được gọi là CONTENTS_FILE_DESCRIPTOR có nghĩa là để được sử dụng trong describeContents() để tạo giá trị trả về bitmask.

Description for CONTENTS_FILE_DESCRIPTOR trong API ref là:

mặt nạ Bit để sử dụng với describeContents(): mỗi bit đại diện cho một loại đối tượng được coi là có tiềm năng có ý nghĩa đặc biệt khi marshalled.

nào thực sự có nghĩa là: Nếu bạn cần phải đặt FileDescriptor đối tượng vào Parcelable bạn nên/phải ghi rõ CONTENTS_FILE_DESCRIPTOR như giá trị trả về của describeContents(), tức là bằng cách "đối tượng đặc biệt" (trong describeContents() 's mô tả) họ thực sự có nghĩa là: FileDescriptor.

Toàn bộ chức năng Kiện bưu kiện này có vẻ chưa hoàn thành (đọc: có thiết kế kém). Có một điều lạ khác trong tài liệu:

Lớp học thực hiện các giao diện Parcelable cũng phải có một trường tĩnh gọi CREATOR, mà là một đối tượng thực hiện các giao diện Parcelable.Creator

Thực hiện đa kế thừa bởi quy tắc được định nghĩa trong biểu mẫu có thể đọc được của con người? :-)

Nó có vẻ như C++ lập trình viên thiết kế Parceable và tại một số điểm ông nhận ra: Oh, chết tiệt, không có thừa kế nhiều trong Java ... :-)

+1

Cảm ơn lời giải thích chi tiết này. Tôi tìm thấy câu trả lời của bạn sau khi bị thất vọng bởi [hướng dẫn này] (http://www.app-solut.com/blog/2011/05/using-self-defined-parcelable-objects-during-an-android-aidl-rpc -ipc-call /) tuyên bố rằng 'describeContents()' sẽ trả về 0 bất cứ khi nào nó * "không có gì đặc biệt về nó" *. Mà không thực sự giải thích bất cứ điều gì. Lời giải thích của bạn rõ ràng hơn nhiều! – WebViewer

+0

ý của bạn là "đặt đối tượng FileDescriptor vào Parcelable", tôi không hiểu vì FileDescriptor không thực hiện giao diện Parcelable. – Leo

+1

@LeoLink android.os.ParcelFileDescriptor – Ognyan

1

Chỉ có hai giá trị có thể, 0 hoặc CONTENTS_FILE_DESCRIPTOR

nếu bạn đang serializing POLO, giá trị này luôn luôn phải là 0, các CONTENTS_FILE_DESCRIPTOR bị đảo ngược cho ParcelFileDescriptor, mà có thể serialize một Descriptor file (FD) trong hệ thống * unix.

Các vấn đề liên quan