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 Parcelablepemanggilan CONTENTS_FILE_DESCRIPTORyang dimaksudkan untuk digunakan dalam describeContents()membuat nilai kembalian bitmask.
Deskripsi CONTENTS_FILE_DESCRIPTORdi 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 FileDescriptorobjek ke dalam Parcelable Anda harus / harus menentukan CONTENTS_FILE_DESCRIPTORsebagai 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 Parceabledan 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.