2012-03-21 10 views
16

onRetainNonConfigurationInstance के बहिष्कार के बाद से मैं कॉन्फ़िगरेशन परिवर्तनों के लिए ढांचे का अधिक से अधिक लाभ उठा रहा हूं। चूंकि मैं अपने मुख्य टुकड़े रखने के लिए व्यूपेगर का उपयोग करता हूं, इसलिए मैं setRetainInstance का उपयोग नहीं कर सकता, जो मानक कॉन्फ़िगरेशन या दृश्य की तरह सेवइनस्टेंसस्टेट पर उपयोग करने के लिए मेरे कॉन्फ़िगरेशन परिवर्तनों को सीमित करता है।ऑनसेवस्टेंसस्टेट सीमा?

यह किसी भी समस्या के बिना पूरी तरह से काम कर रहा है, लेकिन मैं इस समय एक काफी बड़ा सीरियलज़ेबल डेटासेट पास कर रहा हूं जिससे मैं समुदायों को इनपुट प्राप्त करना चाहता हूं कि यह एक अच्छा विचार है या नहीं।

tl; dr: क्या ऑनवेवेंसस्टेट के पास आपके द्वारा पारित होने पर आकार सीमा है?

+0

मुझे लगता है कि यह नहीं है। शायद यह 'साझा क्रेडिट' का उपयोग करता है - मुझे लगता है कि। –

+0

"चूंकि मैं अपने मुख्य टुकड़े रखने के लिए व्यूपेजर का उपयोग करता हूं, इसलिए मैं setRetainInstance का उपयोग नहीं कर सकता" - आपको लगता है कि आप 'ViewPagerInstance()' का उपयोग 'ViewPager' में टुकड़ों के साथ क्यों नहीं कर सकते? मुझे इस सीमा को उद्धृत करने वाली कोई भी जगह नहीं मिल रही है। एक लिंक मिला? धन्यवाद! – CommonsWare

+0

यह बस काम नहीं करता है, यह शायद एक बग है। मैंने 'FragmentPagerAdapter' और' FragmentStatePagerAdapter 'दोनों के साथ प्रयास किया है और न ही परिणामस्वरूप' setRetainInstance() 'के साथ सही ढंग से काम कर रहे टुकड़े हैं। जब मैंने उन्हें 'व्यूपार्जर' से मानक स्विच में ले जाया (नीचे देखें) सबकुछ ठीक से काम करता है। http://developer.android.com/resources/samples/Support13Demos/src/com/example/android/supportv13/app/ActionBarTabsPager.html – HandlerExploit

उत्तर

14

"काफी आकार देने योग्य" से कुछ और कहना उपयोगी होगा। :)

यह डेटा आईपीसी के माध्यम से जाता है, और आईपीसी सीमा लगभग 1 एमबी है। आप अपने मार्शल आकार को उस से काफी छोटा रखना चाहते हैं; 100K शायद एक अच्छा अधिकतम है। और वास्तव में आप इसे जितना संभव हो उतना छोटा रखना चाहते हैं (जो आपने वहां रखा है और अंतरिक्ष को बर्बाद न करें) के बारे में सोचें, क्योंकि जब आपकी प्रक्रिया की हत्या हो जाती है तब भी यह डेटा रैम में सिस्टम द्वारा आयोजित किया जाना चाहिए।

0

सीमा स्मृति सीमा है और चूंकि आपके पास OutOfMemory त्रुटियां नहीं हैं, तो यह ठीक होना चाहिए।

बस सुनिश्चित करें कि गुजरने वाले ऑब्जेक्ट पर कोई दृश्य या संदर्भ न हो क्योंकि इससे उपयोगकर्ता लगातार अभिविन्यास बदलता है तो स्मृति का उपयोग तेजी से बढ़ सकता है।

+0

एप्लिकेशन रीसाइक्लिंग होने पर मेमोरी में कैसा होता है? यह जानकारी तब भी जारी है, इसलिए मुझे पता है कि यह किसी भी स्मृति को नहीं रखा जा सकता है जो कि आवेदन पर निर्भर करेगा, निश्चित रूप से आउटऑफमेमरीर एप्लिकेशन पर ही नहीं होगा। और मैंने स्पष्ट रूप से कहा कि मैं Serializable वस्तुओं को पारित कर रहा था, इसके माध्यम से एक दृश्य या संदर्भ पारित करना असंभव है। लेकिन अगर आपने रीटेनइन कॉन्फ़िगरेशन के माध्यम से एक को पास किया है तो यह पूरी गतिविधि को रिसाव करेगा, इसलिए हां यह अंततः उस परिदृश्य में कॉन्फ़िगरेशन परिवर्तनों पर स्मृति से बाहर हो जाएगा। – HandlerExploit

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