Kehabisan memori di aplikasi android sangat umum jika kita tidak menangani bitmap dengan benar, Solusi untuk masalah tersebut adalah
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);
Dalam kode di atas Saya baru saja mencoba mendaur ulang bitmap yang akan memungkinkan Anda untuk mengosongkan ruang memori yang digunakan, jadi kehabisan memori mungkin tidak terjadi. Saya telah mencobanya berhasil untuk saya.
Jika masih menghadapi masalah Anda juga bisa menambahkan garis ini juga
BitmapFactory.Options options = new BitmapFactory.Options();
options.inTempStorage = new byte[16*1024];
options.inPurgeable = true;
untuk informasi lebih lanjut lihat tautan ini
https://web.archive.org/web/20140514092802/http://voices.yahoo.com/android-virtual-machine-vm-out-memory-error-7342266.html?cat=59
CATATAN: Karena "jeda" sesaat yang disebabkan oleh gc, tidak disarankan untuk melakukan ini sebelum setiap alokasi bitmap.
Desain yang optimal adalah:
Bebaskan semua bitmap yang tidak lagi diperlukan , dengan if / recycle / null
kode yang ditampilkan. (Buat metode untuk membantu itu.)
System.gc();
Alokasikan bitmap baru.