แอปพลิเคชั่น Android มีหน่วยความจำไม่เพียงพอหากเราจัดการบิตแมปไม่ถูกต้องวิธีแก้ปัญหาคือ
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
หมายเหตุ: เนื่องจาก "หยุดชั่วคราว" ที่เกิดจากการดำเนินการ gc จึงไม่แนะนำให้ทำก่อนการจัดสรรบิตแมปแต่ละครั้ง
การออกแบบที่เหมาะสมคือ:
ฟรีบิตแมปทั้งหมดที่ไม่ต้องการอีกต่อไปตามif / recycle / null
รหัสที่แสดง (สร้างวิธีการเพื่อช่วยในเรื่องนั้น)
System.gc();
จัดสรรบิตแมปใหม่