मेरे पास एक कस्टम व्यू है, जो बिटमैप्स समेत सामानों का एक गुच्छा खींचता है। मैं इस ड्राइंग को बिटमैप पर कैश करना चाहता हूं, ताकि मुझे इन ड्राइंग कार्यों और गणना को दोहराने के बजाय, ड्रॉ के अंदर एक सिंगल बिटमैप खींचने की आवश्यकता हो।एंड्रॉइड व्यू पर बिटमैप को सही तरीके से डिलीकेट करने के लिए कहां?
बिटमैप्स को पुन: उपयोग करने की आवश्यकता है जब हम इसका उपयोग नहीं कर रहे हैं। मुझे डेस्ट्रॉय() या व्यू क्लास में दूरस्थ रूप से समान कुछ भी नहीं दिखाई देता है। क्या कोई कॉलबैक विधि है जिसे मैं इसे प्राप्त करने के लिए ओवरराइड कर सकता हूं?
public void <insert_callback_here>() {
cachedBitmap.recycle();
}
कोई एनीमेशन नहीं है। यह एक स्थिर छवि है। छवि को आकर्षित करने के लिए बहुत सी गणनाएं की गई हैं, इसलिए मैं इसे एक बार मेजर() पर कर दूंगा।
यह वही है जो मुझे चाहिए। बस जोड़ने के लिए, मैंने बिटमैप्स को रीसाइक्लिंग के बाद System.gc() भी चलाया, क्योंकि मुझे पर्याप्त मेमोरी होने में समस्याएं थीं। –
अच्छा है, लेकिन ऐप के बारे में सावधान रहें जहां आप क्रिएट() से खत्म करते हैं(): यह एक मेमोरी रिसाव कर सकता है (https://medium.com/square-corner-blog/android-leak-pattern- सदस्यताएं देखें -इन-विचारों-18f0860aa74c)। – RhetoricalRuvim
यह भी महत्वपूर्ण है: मेजर() और ऑन ड्रा() पर अंदर कुछ भी आवंटित करना बुरा अभ्यास है। उदाहरण के लिए, आपके लेआउट पदानुक्रम के आधार पर, व्यूअर() को दृश्य के अंतिम आकार से पहले 2 या 3 बार कहा जाता है। SizeChanged() के अंदर पुन: आवंटन बेहतर होगा। – RhetoricalRuvim