android - एंड्रॉइड पार्सेलबल और सीरियलज़ेबल




serialization android-intent (3)

तो मुझे पता है कि एंड्रॉइड में Serializable के बजाय पार्ससेलबल का उपयोग करने की सिफारिश की जाती है, क्योंकि यह तेज़ है।

मेरा सवाल है: क्या Serializable सही उपयोग करने से बचना असंभव है?

अगर मेरे पास एक कस्टम ऑब्जेक्ट है, तो मैं क्रमबद्ध करना चाहता हूं, मान लें कि मेरे पास निम्न श्रेणी परिभाषा है

public class Person {
   String name;
   int Age;
   ...
   ....
}

इस पार्सलबल को बनाना आसान है, क्योंकि व्यक्ति वर्ग में parcel.write * () का समर्थन होता है, यानी parcel.writeString और parcel.writeInt है

अब, अगर व्यक्ति वर्ग निम्न है तो क्या होगा:

public class PersonTwo {
   MyCustomObj customObj;
   String name;
   int Age;
   ...
   ....
}

मुझे MyCustomObj ऑब्जेक्ट को पार्सल करने का अनुमान कैसा लगता है ?? ऐसा लगता है कि मुझे फिर से क्रमबद्ध करने की आवश्यकता है? लेकिन फिर, मैंने सोचा कि यह धारावाहिक उपयोग करने के लिए धीमा है, और ऐसा लगता है कि इस मामले में इसका उपयोग करने के अलावा हमारे पास कोई विकल्प नहीं है।

मुझे समझ में नहीं आता

क्या कोई मुझे बता सकता है कि मैं इस मामले में PersonTwo को कैसे पार्स करूँगा?


अजय द्वारा दिया गया लिंक सटीक है जो आप खोज रहे हैं, आप इसे कैसे कर सकते हैं। खैर, आप क्या कर सकते हैं अपने CustomObject1 Parcelable को कार्यान्वित कर सकते हैं और इसके लिए एक Parcelable क्लास बना सकते हैं और फिर आप उस Parcelable क्लास को Parcel एक और Parcelable क्लास के अंदर उपयोग कर सकते हैं जो Parcelable Parcel को Parcel करेगा।

public class CustomObject1 implements Parcelable {

   // parcelable code CustomObject1
}

public class CustomObject2 implements Parcelable {

    private CustomObject1 obj1;

   // add  CustomObject1 here with getter setter
   // parcelable code for CustomObject2 

    @Override
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeParcelable(obj1, flags);
    }  
    private void readFromParcel(Parcel in) {
        obj1 = in.readParcelable(CustomObject1.class.getClassLoader());
    }
  ............
}

आपको MyCustomObj पार्सलबल बनाने की आवश्यकता है।


सभी समग्र वस्तुओं को भी पार्सलबल होना चाहिए। यदि आप किसी ऑब्जेक्ट को छोड़ना चाहते हैं तो इसे लिखने के लिए टॉपरसेल विधि का उपयोग न करें।







parcel