2012-08-14 12 views
5

मुझे पता है कि एंड्रॉइड के एपीआई 10 से पहले, recycle() को Bitmap एस के लिए कॉल करना महत्वपूर्ण था, जिसका उपयोग अब और नहीं किया जाता है, क्योंकि वास्तविक कच्चे डेटा को मूल स्मृति में संग्रहीत किया जाता है।API 11+ पर bitmap.recycle() को कॉल करना क्या करता है?

हालांकि, 11 एपीआई के रूप में, Bitmap रों ढेर में जमा हो जाती है, तो मेरा सवाल यह है:

यह अभी भी Bitmap रों पर recycle() कॉल करने के लिए करता है, तो एपीआई काफी बड़ी है की जरूरत है (कम से कम 11)? अगर मैं इसे एपीआई पर कॉल करता हूं तो यह क्या करता है?

+0

जब आप कहते हैं "एपीआई 10 से पहले रीसायकल() को कॉल करना महत्वपूर्ण था" क्या इसका मतलब यह है कि यदि आप स्मृति नहीं करते हैं तो कभी भी मुक्त नहीं किया जाएगा? आधिकारिक दस्तावेज़ों का कहना है कि यह "अनुशंसित" है, लेकिन अगर यह मूल स्मृति में बिटमैप आवंटित करता है तो मुझे समझ में नहीं आता कि यह रीसायकल() के कॉल के बिना कैसे मुक्त हो सकता है। – Tiago

+0

@ टियागो आप इस व्याख्यान को देख सकते हैं: https://www.youtube.com/watch?v=_CruQY55HOk#t=656। बिटमैप्स ने ढेर में वास्तव में छोटी जगह ली, लेकिन उनके पिक्सेल डेटा (अभी तक ढेर के ओओएम तंत्र का हिस्सा नहीं था), इसलिए जीसी को पता नहीं था कि स्थिति कितनी अच्छी/बुरी है, और यदि यह ' टी कई बिटमैप्स बनाते समय ट्रिगर हुआ, आप आसानी से ओओएम प्राप्त कर सकते थे। यही कारण है कि "रीसायकल" को कॉल करना महत्वपूर्ण है, ताकि यह जितनी जल्दी हो सके बिटमैप्स को साफ कर दे (क्योंकि जीसी ने अपनी नौकरी अच्छी तरह से नहीं की है)। –

+0

आह, मैं देखता हूं। इससे बहुत कुछ पता चलता है। यह बहुत अजीब बात है कि आउटऑफमेमरी अपवाद दोनों ढेर और मूल स्मृति दोनों के लिए गिना जाएगा जबकि जीसी केवल ढेर को देखेगा। एक बार हनीकॉम + बिटमैप्स का पिक्सेल डेटा ढेर में भी होता है, तो जीसी अपना काम सही कर सकता है। क्या गड़बड़ है, हे! स्पष्टीकरण देने के लिए धन्यवाद! – Tiago

उत्तर

5

आधिकारिक दस्तावेज बताता है कि recycle() अब एक उन्नत कॉल है, इसलिए यदि आप अपना बिटमैप मुक्त करना चाहते हैं तो आप bitmap = null जैसे कुछ लिख सकते हैं और जीसी अन्य सभी का ख्याल रखेगा।

+0

समझा । तो रीसायकल अभी भी इसकी याददाश्त अभी भी मुक्त कर देगा? –

+0

हां, रीसायकल मुक्त स्मृति होगी जीसी को नहीं देखेगा, इसलिए आपको इस कॉल से सावधान रहना होगा। – s0nicYouth

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