Catatan: Untuk sebagian besar kasus, sebaiknya gunakan library Glide untuk mengambil, mendekode, dan menampilkan bitmap dalam aplikasi. Glide menyederhanakan sebagian besar kompleksitas dalam menangani tugas ini dan tugas lain yang terkait dengan penggunaan bitmap dan gambar lain di Android. Untuk informasi cara menggunakan dan mendownload Glide, buka repositori Glide di GitHub.
Memuat satu bitmap ke antarmuka pengguna (UI) sangat mudah, tetapi situasinya akan menjadi lebih
rumit jika Anda harus memuat satu set gambar yang lebih besar sekaligus. Dalam banyak kasus (misalnya pada
komponen seperti ListView, GridView, atau ViewPager), jumlah total gambar di layar jika digabungkan dengan gambar yang
mungkin akan segera di-scroll ke layar, pada dasarnya tidak terbatas.
Penggunaan memori diturunkan dengan komponen seperti ini dengan mendaur ulang tampilan turunan saat berpindah keluar layar. Pembersih sampah memori juga mengosongkan bitmap yang dimuat, dengan asumsi Anda tidak menyimpan referensi jangka lama. Semua ini bagus, tetapi untuk mempertahankan UI yang lancar dan dimuat dengan cepat, sebaiknya hindari memproses gambar ini secara terus-menerus tiap kali gambar ini muncul kembali di layar. Memori dan cache disk sering kali berguna di sini, sehingga komponen dapat dengan cepat memuat ulang gambar yang diproses.
Pelajaran ini akan memandu Anda menggunakan memori dan cache bitmap disk untuk meningkatkan daya respons dan kelancaran UI saat memuat beberapa bitmap.
Menggunakan Cache Memori
Cache memori menawarkan akses yang cepat ke bitmap, tetapi dapat menghabiskan
memori aplikasi yang berharga. Class LruCache (juga tersedia di Support Library untuk digunakan kembali
ke API Level 4) sangat sesuai dengan tugas menyimpan cache bitmap, dengan mempertahankan
objek yang baru-baru ini direferensikan dalam LinkedHashMap, yang direferensikan dengan tegas dan mengeluarkan
anggota yang paling lama digunakan sebelum cache melebihi ukuran yang ditentukan.
Catatan: Sebelumnya, implementasi cache memori yang populer digunakan adalah
cache bitmap SoftReference atau WeakReference, tetapi
tidak direkomendasikan. Mulai dari Android 2.3 (API Level 9) pembersih sampah memori lebih
agresif mengumpulkan referensi lembut/lemah yang membuatnya agak tidak efektif. Selain itu,
sebelum Android 3.0 (API Level 11), data pendukung bitmap disimpan di memori native yang
tidak dirilis dengan cara yang dapat diprediksi, yang berpotensi menyebabkan aplikasi melewati
batas memorinya dalam waktu singkat dan kemudian error.
Untuk memilih ukuran yang sesuai bagi LruCache, sejumlah faktor
harus dipertimbangkan, misalnya:
- Seberapa intensif aktivitas dan