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