यदि हम बिटमैप को ठीक से नहीं संभालते हैं, तो एंड्रॉइड एप्लिकेशन में मेमोरी आउट होना बहुत आम है
if(imageBitmap != null) {
imageBitmap.recycle();
imageBitmap = null;
}
System.gc();
BitmapFactory.Options options = new BitmapFactory.Options();
options.inSampleSize = 3;
imageBitmap = BitmapFactory.decodeFile(URI, options);
Bitmap scaledBitmap = Bitmap.createScaledBitmap(imageBitmap, 200, 200, true);
imageView.setImageBitmap(scaledBitmap);
उपरोक्त कोड में अभी बिटमैप को रीसायकल करने की कोशिश की गई है जो आपको उपयोग की गई मेमोरी स्पेस को मुक्त करने की अनुमति देगा, इसलिए मेमोरी से बाहर नहीं हो सकता है। मैंने कोशिश की है कि यह मेरे लिए काम करे।
यदि फिर भी समस्या का सामना करना पड़ रहा है तो आप इन रेखाओं को भी जोड़ सकते हैं
BitmapFactory.Options options = new BitmapFactory.Options();
options.inTempStorage = new byte[16*1024];
options.inPurgeable = true;
अधिक जानकारी के लिए इस लिंक पर एक नज़र डालें
https://web.archive.org/web/20140514092802/http://voices.yahoo.com/android-virtual-machine-vm-out-memory-error-7342266.html?cat=59
नोट: जीसी प्रदर्शन के कारण क्षणिक "ठहराव" के कारण, प्रत्येक बिटमैप आवंटन से पहले ऐसा करने की अनुशंसा नहीं की जाती है ।
इष्टतम डिजाइन है:
मुक्त सभी बिटमैप्स कि अब जरूरत है , से if / recycle / nullपता चला कोड। (उस के साथ मदद करने के लिए एक विधि बनाओ।)
System.gc();
नए बिटमैप आवंटित करें।