Bagaimana menghindari Kesalahan Kehabisan Memori saat menangani Tampilan Gambar

Di aplikasi saya, saya memilih gambar dari penyimpanan atau mengambil gambar menggunakan kamera dan itu akan diatur ke tampilan gambar. Saat melakukan ini saya mendapat Kesalahan Kehabisan memori, untuk menghindari ini saya menggunakan metode ini. Tetapi tidak berhasil, adakah yang bisa membantu menyelesaikan masalah ini. Atau adakah yang bisa menyarankan metode lain untuk menangani masalah ini.

 public void decodeFile(String filePath) {
    // Decode image size
    BitmapFactory.Options o = new BitmapFactory.Options();
    o.inJustDecodeBounds = true;
    BitmapFactory.decodeFile(filePath, o);

    // The new size we want to scale to
    final int REQUIRED_SIZE = 1024;

    // Find the correct scale value. It should be the power of 2.
    int width_tmp = o.outWidth, height_tmp = o.outHeight;
    int scale = 1;
    while (true) {
        if (width_tmp < REQUIRED_SIZE && height_tmp < REQUIRED_SIZE)
            break;
        width_tmp /= 2;
        height_tmp /= 2;
        scale *= 2;
    }

    // Decode with inSampleSize
    BitmapFactory.Options o2 = new BitmapFactory.Options();
    o2.inSampleSize = scale;
    bitmap = BitmapFactory.decodeFile(filePath, o2);

    imgView.setImageBitmap(bitmap);

}

person Jack    schedule 08.07.2015    source sumber
comment
Tampaknya Anda memanggil BitmapFactory.decodeFile dua kali. Yang akan memuat gambar Anda ke dalam memori dua kali. Lihatlah: stackoverflow.com/questions/11681274/   -  person Morrison Chang    schedule 08.07.2015
comment
Saya mendapatkan kode ini dari tutorial, dapatkah Anda memeriksa pernyataan if ini, dan mohon perbaiki jika ada kesalahan. Saya tidak dapat memahami pernyataan if (width_tmp REQUIRED_SIZE height_tmp REQUIRED_SIZE) break;   -  person Jack    schedule 08.07.2015
comment
o.inJustDecodeBounds = salah; tambahkan ini sebelum BitmapFactory.Options o2 = new BitmapFactory.Options();   -  person Piyush    schedule 08.07.2015


Jawaban (1)


Saya menyarankan untuk menggunakan perpustakaan untuk menangani pemuatan, cache, dan menampilkan gambar. Mereka mudah digunakan dan Anda tidak perlu mengurus perampingan gambar, dll.

Dalam proyek saya, saya menggunakan Universal Image Loader oleh nostra13. Ini cukup mudah untuk diterapkan dan menawarkan banyak fitur seperti memori dan cache disk. Anda harus mencobanya.

person W3hri    schedule 08.07.2015