2012-08-16 13 views
5

मैं अपने ऐप के प्रदर्शन में सुधार करना चाहता हूं। एक चीज जो मेरे दिमाग में आती है वह सभी धारावाहिक उद्देश्यों-बंडल पैरामीटर को पार्सलबल के साथ प्रतिस्थापित करना है। कि parcelable केवल interprocess संचार के लिए इस्तेमाल किया जा करने के लिए है Benefit of using Parcelable instead of serializing objectगतिविधियों के बीच डेटा पास करने के लिए लागू करने के लिए पार्सल करने योग्य मूल्य है?

वहाँ

किसी एक पुस्तक से, राज्यों,:

मैं इस सूत्र पाया? यह शायद अद्यतित नहीं है, और, सही? क्योंकि यह तकनीकी रूप से कम से कम संभव है।

तो फिर वहाँ भी बयान है कि parcelable कार्यान्वयन करवाते उपकरणों भिन्न होता है क्योंकि, इस के पाठ्यक्रम एक की मौत हो गई विशेषता, सभी उपकरणों और एपीआई, होगा के बाद से मैं यह हमेशा काम करना चाहते हैं, एपीआई से शुरू विश्वसनीय नहीं है 7.

और मैंने बाहरी प्रोटोकॉल का उपयोग करने या कस्टम प्रोटोकॉल को लागू करने के बारे में कुछ सलाह भी पढ़ीं ... लेकिन मुझे समझ में नहीं आ रहा है, क्यों पार्सलबल विश्वसनीय नहीं है, एंड्रॉइड डेवलपर्स ऐसा कुछ क्यों करते हैं जो सभी उपकरणों पर काम नहीं करेगा? या टिप्पणी सच नहीं है?

क्या यह पार्सेलबल को लागू करने योग्य है? क्या मैं Serializable के साथ चिपक जाता हूँ? या एक कस्टम धारावाहिक/सही दृष्टिकोण बाहरी है?

कृपया मुझे "बस कोशिश", मैं इस के लिए समय नहीं है, विशेष रूप से जाँच करने के लिए करता है, तो Parcelable विश्वसनीय है (और यह भी पर्याप्त नहीं डिवाइस) ... अनुभव पूछा जाता है नहीं बताया ...

धन्यवाद।

पीएस यह भी मत कहो "अधिकांश मामलों के लिए सीरियलज़ेबल स्वीकार्य होगा" मुझे पता है कि, यह वास्तव में स्वीकार्य है लेकिन मेरे पास समय है और यदि आप उपयोगकर्ता अनुभव में सुधार करते हैं, तो इसे पार्ससेल (या कुछ और) के साथ उपयोग करना चाहते हैं।

उत्तर

5

Parcelable सभी उपकरणों पर, हमेशा, हमेशा काम करता है। यदि ऐसा नहीं हुआ, कुछ भी नहीं काम करेगा। एंड्रॉइड इंटर्नल Parcelable पर बहुत भारी निर्भर हैं।

ParcelableSerializable से थोड़ा अधिक कुशल होगा लेकिन मुझे गंभीरता से संदेह है कि इसका आपके "उपयोगकर्ता अनुभव" पर अधिक असर होगा (जब तक, निश्चित रूप से, आप इसे पूरे स्थान पर उपयोग नहीं कर रहे हैं और बहुत बड़ी और जटिल वस्तुओं को क्रमबद्ध कर रहे हैं)।

यदि आपको लगता है कि आपके पास प्रदर्शन समस्याएं हैं, तो मैं अपना उपलब्ध समय आवेदन को प्रोफाइल करने और अनुभव करने के लिए अनुभव कर रहा हूं कि वह अपना समय कहां खर्च कर रहा है। SerializableParcelable के साथ IMHO को अपेक्षाकृत कम-स्तरीय कार्यान्वयन अनुकूलन है जो आपको शून्य समझने योग्य प्रदर्शन सुधार के करीब देने की संभावना है।

+0

वर्तमान में मेरे पास प्रदर्शन समस्याएं नहीं हैं, मैंने सोचा कि तेजी से पैरामीटर गुजरने से स्क्रीन स्विच तेज हो जाएगा जैसे ऐप हल्का और तेज महसूस करता है। त्वरित और उत्तरदायी कुछ ऐसा है जो मैं उपयोगकर्ता अनुभव के लिए बहुत महत्वपूर्ण मानता हूं। – Ixx

+0

मैं बड़ी मात्रा में डेटा नहीं पारित कर रहा हूं, लेकिन कुछ प्राइमेटिव भी नहीं ... मैं उपयोगकर्ता-ऑब्जेक्ट (1) जैसी चीजें पास कर रहा हूं, जिसमें बहुत से व्यक्तिगत डेटा, या खाते, इस तरह की चीजें हैं। – Ixx

4

कोई किताब कहता है कि पार्सलबल केवल इंटरप्रोसेस संचार के लिए उपयोग किया जाता है? यह शायद अद्यतित नहीं है, और, सही? क्योंकि यह तकनीकी रूप से कम से कम संभव है।

यदि पार्ससेल योग्य गतिविधियों के बीच पारित नहीं किया गया था, तो putExtra (String name, Parcelable value) एपीआई स्तर 1 के बाद से इरादा विधि क्यों मौजूद है?

तो फिर वहाँ भी बयान है कि parcelable विश्वसनीय कार्यान्वयन करवाते उपकरणों से भिन्न होता है, क्योंकि नहीं है, यह जाहिर है, एक विशेषता की हत्या हो के बाद से मैं, यह हमेशा काम करना चाहते हैं सभी उपकरणों और एपीआई, एपीआई 7 से शुरू होगा।

मेरी बोली चलो Parcel प्रलेखन:

पार्सल एक सामान्य प्रयोजन क्रमबद्धता तंत्र नहीं मानता। इस वर्ग (और पार्सल में मनमानी वस्तुओं को रखने के लिए संबंधित पार्ससेल योग्य एपीआई) उच्च-प्रदर्शन आईपीसी परिवहन के रूप में डिज़ाइन किया गया है। इस प्रकार, किसी भी पार्सल डेटा को में लगातार भंडारण में रखना उचित नहीं है: पार्सल में किसी भी डेटा के अंतर्निहित कार्यान्वयन में परिवर्तन पुराने डेटा को अपठनीय प्रस्तुत कर सकते हैं।

यहां मैं केवल एक सतत डेटा में पार्सल डेटा संग्रहीत करने के बारे में सलाह नहीं पढ़ सकता हूं। मेरे व्यक्तिगत अनुभव से पार्ससेल योग्य गतिविधियों के बीच डेटा पास करने के लिए कभी भी कोई मुद्दा नहीं था। मैं इसका उपयोग करता हूं और वर्तमान एपीआई को एपीआई 8 का समर्थन करता हूं।

प्रदर्शन और गति के बारे में यह पता चला है कि पार्ससेलबल का उपयोग करना बेहतर है, क्योंकि यह एक एंड्रॉइड विशिष्ट उच्च-प्रदर्शन आईपीसी परिवहन क्रमबद्धता तंत्र है। हालांकि, वास्तव में एक सुधार देखने के लिए, यह इस बात पर निर्भर करता है कि आप इसका कितना उपयोग करते हैं।

+0

खैर, मैंने यह भी देखा कि इसे पास करना संभव है, और यहां तक ​​कि पहले से ही इसका परीक्षण किया गया था, लेकिन उस धागे से भ्रमित हो गया -> "यही है, पार्सलबल एक गतिविधि को पारित करने के लिए नहीं है। अगर आप एक शुरू करना चाहते हैं गतिविधि और इसे कुछ डेटा पास करें, एक बंडल का उपयोग करें। पार्सलबल का उपयोग केवल एआईडीएल परिभाषा के हिस्से के रूप में किया जाना है। " और अन्य पदों का कहना है कि यह विश्वसनीय नहीं है। – Ixx

+0

बंडल एक पुटरसेलबल() विधि भी प्रदान करता है। वैसे, इरादे और बंडल एक प्रकार का आईपीसी (इंटर-प्रोसेस कम्युनिकेशन) तंत्र हैं, इसलिए उनका उपयोग करके पार्ससेल के लिए डिज़ाइन किया गया है। –

+0

हां मुझे पता है लेकिन आप समझते हैं कि यह 26 वोट (और 100 बक्षीस) के साथ एक स्वीकार्य उत्तर को भ्रमित कर रहा है, जिसमें कहा गया है कि "पार्सलेबल को एक गतिविधि के लिए तैयार नहीं होना चाहिए"। जैसा कि कहा गया है कि मैंने पहले ही यह कोशिश की है और यह काम करता है, लेकिन उस धागे ने मुझे संदेह दिलाया। – Ixx

संबंधित मुद्दे

 संबंधित मुद्दे