Adakah yang tahu di mana / kapan metode Parcelable ini dipanggil?
@Override
public int describeContents() {
return 0;
}
Itu harus diganti. Tetapi haruskah saya mempertimbangkan untuk melakukan sesuatu yang berguna dengannya?
Jawaban:
Ada konstanta yang didefinisikan dalam Parcelable
pemanggilan CONTENTS_FILE_DESCRIPTOR
yang dimaksudkan untuk digunakan dalam describeContents()
membuat nilai kembalian bitmask.
Deskripsi CONTENTS_FILE_DESCRIPTOR
di ref API adalah:
Masker bit untuk digunakan dengan descriptionContents (): setiap bit mewakili jenis objek yang dianggap memiliki signifikansi khusus potensial ketika disusun.
Yang benar-benar berarti: Jika Anda perlu menempatkan FileDescriptor
objek ke dalam Parcelable Anda harus / harus menentukan CONTENTS_FILE_DESCRIPTOR
sebagai nilai kembali dari describeContents (), yaitu dengan " objek khusus " (di describeContents()
's description) mereka benar-benar berarti: FileDescriptor
.
Seluruh fungsi Parcelable ini terlihat belum selesai (baca: desainnya jelek). Ada satu hal aneh lainnya di dokumen:
Kelas yang menerapkan antarmuka Parcelable juga harus memiliki bidang statis yang disebut CREATOR, yang merupakan objek yang mengimplementasikan antarmuka Parcelable.Creator
Menerapkan banyak warisan dengan aturan yang ditentukan dalam bentuk yang dapat dibaca manusia? :-)
Sepertinya programmer C ++ dirancang Parceable
dan pada titik tertentu dia menyadari: Oh, sial, tidak ada banyak warisan di Java ... :-)
describeContents()
harus mengembalikan 0 setiap kali "tidak ada yang istimewa tentang itu" . Yang tidak menjelaskan apapun. Penjelasan Anda jauh lebih jelas!
Hanya ada dua nilai yang mungkin, 0 atau CONTENTS_FILE_DESCRIPTOR
jika Anda membuat serial POLO, nilai ini harus selalu 0, CONTENTS_FILE_DESCRIPTOR dicadangkan untuk ParcelFileDescriptor , yang dapat membuat serialisasi File Descriptor (FD) di sistem * unix.