से रिलीज बिटमैप्स क्या कोई जानता है कि android.view.GLES20DisplayList से बिटमैप्स कैसे रिलीज़ करें। और यदि आप साफ करते हैं, तो यह उन्हें जीवित क्यों रखता है, मान लें, ImageView मैन्युअल रूप से? या शायद GLES20DisplayList को अक्षम करने का एक तरीका है, एंड्रॉइड का उपयोग करने का प्रयास किया गया: AndroidAccelerated = AndroidManifest में "false", अभी भी कोई भाग्य नहीं है।एंड्रॉइड.view.GLES20DisplayList
लग रहा है में केवल प्रभावित तरह 4,2 (1)
अद्यतन: (? बग) की तरह आप पर 4.2.1 हार्डवेयर त्वरण अक्षम नहीं कर सकता लग रहा है
साधारण परीक्षण:
Android manifest:
application ... android:hardwareAccelerated="false"
System.out.println("isHardwareAccelerated: " + mListView.isHardwareAccelerated());
mListView.setLayerType(LAYER_TYPE_SOFTWARE, null);
System.out.println("isHardwareAccelerated: " + mListView.isHardwareAccelerated());
परिणाम:
12-06 17:15:27.129: I/System.out(30752): isHardwareAccelerated: true
12-06 17:15:27.129: I/System.out(30752): isHardwareAccelerated: true
ऐसा इसलिए होता है क्योंकि जब तक दृश्य हटा नहीं जाता है तब तक वे बिटमैप रखते हैं। GLES20DisplayList से टिप्पणी यहां दी गई है: /* ये सूचियां सुनिश्चित करती हैं कि डिस्प्लेलिस्ट द्वारा रिकॉर्ड किए गए किसी भी बिटमैप्स और डिस्प्लेलिस्ट को तब तक जीवित रखा जाता है जब तक डिस्प्लेलिस्ट जीवित रहता है। बिटमैप और डिस्प्लेलिस्ट सूचियां GLES20RecordingCanvas द्वारा उपयुक्त ड्राइंग कॉल के दौरान पॉप्युलेट की जाती हैं और एक नए ड्राइंग फ्रेम की शुरुआत में या विंडो से दृश्य को अलग होने पर साफ़ कर दिया जाता है। */मूल रूप से आपको बिटमैप/ड्रायबल रीसायकल करने में सक्षम होने के लिए अलग-अलग दृश्य की आवश्यकता है। – vovkab
मैंने ऑनस्टॉप में विचारों को हटा दिया, फिर भी स्मृति को आयोजित किया जा रहा था। (केवल 4.2 पर) –
क्या स्मृति विश्लेषक दिखाता है? शायद कोई और संदर्भ रख रहा है या संदर्भ लीक हो गया है? ImageViews से पूरी तरह से बिटमैप्स को साफ़ करने का प्रयास करें और फिर दृश्य को अलग करें। – vovkab