Saya ingin berbagi pengalaman saya dengan 3 perpustakaan ini: UIL, Picasso, dan Volley. Saya sebelumnya menggunakan UIL tetapi kemudian saya sampai pada kesimpulan bahwa saya tidak dapat merekomendasikannya dan saya akan menyarankan untuk menggunakan Volley atau Picasso sebagai gantinya yang keduanya dikembangkan oleh tim yang sangat berbakat. UIL sama sekali tidak buruk tetapi kurang memperhatikan detail dari dua perpustakaan lainnya.
Saya menemukan UIL kurang bagus dengan kinerja UI; itu cenderung mengunci utas UI lebih dari Volley atau Picasso. Ini mungkin sebagian karena UIL tidak mendukung pengelompokan tanggapan gambar sementara Picasso dan Volley melakukannya secara default.
Selain itu, saya tidak menyukai sistem cache disk UIL. Meskipun Anda dapat memilih di antara berbagai penerapan, saya perlu menunjukkan bahwa saat ini tidak ada cara untuk membatasi cache disk UIL keduanya berdasarkan ukuran total maupun waktu kedaluwarsa entitas. Volley dan Picasso melakukan itu, dan mereka menggunakan waktu kedaluwarsa yang dikembalikan oleh server secara default sementara UIL mengabaikannya.
Terakhir, UIL memungkinkan Anda menyetel konfigurasi pemuat gambar global yang menyertakan cache disk yang dipilih dan implementasi serta setelan cache memori dan detail lainnya, tetapi konfigurasi ini akan diterapkan di mana saja di aplikasi Anda. Jadi jika Anda membutuhkan lebih banyak fleksibilitas seperti dua cache disk yang terpisah, UIL tidak boleh digunakan. Volley di sisi lain memungkinkan Anda memiliki pemuat gambar terpisah sebanyak yang Anda inginkan, masing-masing dengan konfigurasinya sendiri. Picasso menggunakan contoh global secara default tetapi juga memungkinkan Anda membuat contoh yang dapat dikonfigurasi secara terpisah.
Singkatnya: Picasso memiliki API terbaik tetapi menggunakan cache disk HTTP global yang digunakan bersama di antara semua HttpURLConnection
contoh, yang dapat menjadi terlalu terbatas dalam beberapa kasus. Volley memiliki kinerja dan modularitas terbaik tetapi kurang ramah pengguna dan akan mengharuskan Anda menulis satu atau dua modul sendiri untuk membuatnya berfungsi seperti yang Anda inginkan. Secara keseluruhan saya akan merekomendasikan mereka berdua terhadap UIL.
Sunting (18 Des 2014): Banyak hal telah berubah sejak saya menulis jawaban awal ini dan saya merasa perlu untuk memperbaikinya:
Picasso 2.4 bahkan lebih dapat dikonfigurasi daripada rilis sebelumnya, dan bila digunakan dengan OkHttp (yang sangat disarankan), Picasso juga dapat menggunakan cache disk yang terpisah untuk setiap kejadian sehingga tidak ada batasan dalam apa yang dapat Anda lakukan. Lebih penting lagi, saya perhatikan bahwa kinerja Picasso dan OkHttp telah meningkat pesat dan menurut saya sekarang ini adalah solusi pemuat gambar tercepat untuk Android, titik. Harap dicatat bahwa dalam kode saya, saya selalu menggunakan .fit()
kombinasi dengan .centerCrop()
atau .centerInside()
untuk menurunkan penggunaan memori dan menghindari perubahan ukuran bitmap pada thread UI. Picasso secara aktif dikembangkan dan didukung dan itu tentu saja merupakan nilai tambah yang besar.
Volley tidak banyak berubah tetapi saya melihat dua masalah dengannya sementara itu:
- Terkadang di bawah beban berat, beberapa gambar tidak dimuat lagi karena beberapa kerusakan cache disk.
- Thumbnail yang ditampilkan di NetworkImageView (dengan tipe skalanya disetel ke centerCrop) cukup kabur dibandingkan dengan apa yang Anda dapatkan dengan pustaka lain.
Untuk alasan ini saya memutuskan untuk berhenti menggunakan Volley.
UIL masih lambat (terutama cache disk) dan API-nya cenderung sering berubah.
Saya juga menguji perpustakaan baru ini yang disebut Glide 3 yang mengklaim lebih dioptimalkan daripada Picasso dengan API mirip Picasso. Menurut pengalaman pribadi saya, ini sebenarnya lebih lambat daripada Picasso dan Volley selama permintaan jaringan di bawah beban berat, bahkan ketika digunakan dalam kombinasi dengan OkHttp. Lebih buruk lagi, itu menyebabkan beberapa crash dengan aplikasi saya di bawah Lollipop saat meninggalkan suatu aktivitas. Ini masih memiliki 2 keunggulan dibandingkan pesaingnya:
- Ini mendukung decoding GIF animasi
- Ini menempatkan bitmap downscaled terakhir di cache disk, yang berarti membaca kembali dari cache disk sangat cepat.
Kesimpulan: Sekarang saya merekomendasikan untuk menggunakan Picasso + OkHttp karena memberikan fleksibilitas terbaik, API, kinerja dan stabilitas gabungan. Jika Anda membutuhkan dukungan GIF, Anda juga dapat mempertimbangkan Glide.