क्या किसी को पता है कि पार्सल के इस तरीके को कहाँ / कब कहा जाता है?
@Override
public int describeContents() {
return 0;
}
इसे ओवरराइड करना होगा। लेकिन क्या मुझे इसके साथ कुछ उपयोगी करने पर विचार करना चाहिए?
जवाबों:
वहाँ एक निरंतर में परिभाषित किया गया है Parcelable
कहा जाता है CONTENTS_FILE_DESCRIPTOR
जो में इस्तेमाल किया जा करने के लिए है describeContents()
वापसी मान bitmask बनाने के लिए।
के लिए विवरण CONTENTS_FILE_DESCRIPTOR
में एपीआई रेफरी है:
डिस्क्रिप्शन कॉन्टेंट () के साथ उपयोग के लिए बिट मास्क: प्रत्येक बिट एक प्रकार की वस्तु का प्रतिनिधित्व करता है जिसे मार्शेल्ड होने पर संभावित विशेष महत्व माना जाता है।
जिसका वास्तव में अर्थ है: यदि आपको FileDescriptor
पार्सल में ऑब्जेक्ट डालने की आवश्यकता है, तो आपको वर्णन विशेषकों CONTENTS_FILE_DESCRIPTOR
(), अर्थात " विशेष ऑब्जेक्ट " ( describeContents()
'विवरण' में ) के रिटर्न मान के रूप में निर्दिष्ट करना चाहिए : उनका वास्तव में मतलब है FileDescriptor
:।
यह पूरी पार्सल कार्यक्षमता अधूरी दिखती है (पढ़ें: खराब डिजाइन है)। डॉक्स में एक और अजीब बात है:
Parcelable इंटरफ़ेस को लागू करने वाली कक्षाओं में CREATOR नामक एक स्थिर फ़ील्ड भी होना चाहिए, जो Parcelable.Creator इंटरफ़ेस को लागू करने वाली एक वस्तु है
मानव पठनीय रूप में परिभाषित नियमों द्वारा कई विरासत को लागू करना? :-)
ऐसा लगता है कि C ++ प्रोग्रामर द्वारा डिज़ाइन किया गया है Parceable
और किसी बिंदु पर उसे एहसास हुआ है: ओह, अरे, जावा में कोई बहु विरासत नहीं है ... :-)
describeContents()
जाना चाहिए कि जब भी इसे "इसके बारे में कुछ खास नहीं" होना चाहिए । जो वास्तव में कुछ भी स्पष्ट नहीं करता है। आपका स्पष्टीकरण इतना स्पष्ट है!
केवल दो संभावित मूल्य हैं, 0 या CONTENTS_FILE_DESCRIPTOR
यदि आप POLO को क्रमबद्ध कर रहे हैं, तो यह मान हमेशा 0 होना चाहिए, CONTENTS_FILE_DESCRIPTOR ParcelFileDescriptor के लिए आरक्षित है , जो एक फाइल डिस्क्रिप्टिव (FD) को * यूनिक्स प्रणाली में क्रमबद्ध कर सकता है।