Perbarui Sep 2018: Setelah beberapa tahun, saya membutuhkan hal yang hampir sama untuk solusi cache gambar lokal. Saat ini UIL belum aktif dalam pengembangan. Saya membandingkan perpustakaan populer, dan kesimpulannya cukup mudah: cukup gunakan Glide. Ini jauh lebih kuat dan dapat dikonfigurasi. Bertahun-tahun yang lalu saya harus bercabang dan membuat perubahan pada UIL. Glide mendukung semua kasus penggunaan saya dalam hal strategi cache dan berbagai level cache resolusi dengan kunci kustom. Cukup gunakan Glide!
Perbandingan Koushik Dutta sebagian besar untuk patokan kecepatan. Postingannya hanya menyentuh hal-hal yang sangat mendasar, dan tidak spesifik untuk gambar lokal. Saya ingin berbagi pengalaman saya dengan Picasso dan UIL setelah saya mengajukan pertanyaan. Picasso dan UIL dapat memuat gambar lokal. Saya pertama kali mencoba Picasso dan senang, tetapi kemudian saya memutuskan untuk beralih ke UIL untuk lebih banyak opsi penyesuaian.
Picasso:
Antarmuka Picasso yang fasih bagus. Tapi melompat-lompat dengan "dengan", "ke", "memuat" Anda sebenarnya tidak tahu apa yang ada di balik layar. Membingungkan apa yang dikembalikan.
Picasso memungkinkan Anda menentukan ukuran target yang tepat. Ini berguna ketika Anda memiliki masalah tekanan memori atau kinerja, Anda dapat menukar beberapa kualitas gambar dengan kecepatan.
Gambar di-cache dengan ukuran pada kuncinya, ini berguna saat Anda menampilkan gambar dengan ukuran berbeda.
Anda dapat menyesuaikan ukuran cache memori. Tetapi cache disknya hanya untuk permintaan http. Untuk gambar lokal, jika Anda peduli dengan kecepatan memuat, ada baiknya memiliki cache disk thumbnail sehingga Anda tidak perlu membaca beberapa MB untuk sebuah gambar setiap saat. Picasso tidak memiliki mekanisme ini untuk mengubah ukuran dan menyimpan thumbnail pada disk.
Picasso tidak memperlihatkan akses ke contoh cache-nya. (Anda bisa mendapatkannya saat pertama kali mengkonfigurasi Picasso dan menyimpannya di sekitar ...).
Terkadang Anda ingin membaca gambar secara asinkron menjadi bitmap yang dikembalikan oleh pendengar. Anehnya Picasso tidak memilikinya. "fetch ()" tidak mengembalikan apapun. "get ()" untuk pembacaan sinkron, dan "load ()" untuk menggambar tampilan secara asinkron.
Picasso hanya memiliki beberapa contoh sederhana di beranda, dan Anda harus membaca javadoc tak berurutan untuk penggunaan lanjutan.
UIL:
UIL menggunakan pembangun untuk kustomisasi. Hampir semuanya bisa dikonfigurasi.
UIL tidak mengizinkan Anda menentukan ukuran yang ingin Anda muat ke dalam tampilan. Ini menggunakan beberapa aturan berdasarkan ukuran tampilan. Ini tidak sefleksibel Picasso. Saya tidak punya cara untuk memuat gambar beresolusi lebih rendah untuk mengurangi jejak memori. (Sunting: perilaku ini dapat dengan mudah dimodifikasi dengan menambahkan argumen ImageSize di dalam kode sumber dan melewati pemeriksaan ukuran tampilan)
UIL menyediakan cache disk yang dapat disesuaikan, Anda dapat menggunakannya untuk menyimpan thumbnail dengan ukuran tertentu. Tapi itu tidak sempurna. Berikut detailnya . (Sunting: jika Anda peduli dengan kecepatan dan menginginkan beberapa tingkat cache thumbnail, seperti kasus saya, Anda dapat memodifikasi kode sumber, biarkan cache disk menggunakan "memoryKey", dan membuatnya juga sensitif terhadap ukuran)
UIL secara default menyimpan gambar dengan ukuran berbeda dalam memori, dan dapat dimatikan dalam konfigurasi.
UIL memperlihatkan memori cadangan dan cache disk yang dapat Anda akses.
UIL menyediakan cara fleksibel untuk mendapatkan bitmap atau memuat ke tampilan.
UIL lebih baik dalam dokumentasi. UIL memberikan penggunaan rinci di halaman Github, dan ada tutorial yang ditautkan.
Saya sarankan memulai dengan Picasso, jika Anda membutuhkan lebih banyak kontrol dan penyesuaian, gunakan UIL.
UIL does not allow you to specify the size you want to load into a view
tidak 100% benar .. dengan UIL Anda dapat menggunakanpublic void displayImage(String uri, ImageAware imageAware, DisplayImageOptions options, ImageSize targetSize, ImageLoadingListener listener, ImageLoadingProgressListener progressListener)
Jika Anda membaca posting ini di G + oleh Koush, Anda akan mendapatkan solusi yang jelas untuk kebingungan Anda, saya telah merangkumnya, karena Android-Universal-Image-Loader adalah pemenang untuk kebutuhan Anda!
Picasso memiliki API gambar terbaik jika Anda menggunakan jaringan!
UrlImageViewHelper + AndroidAsync adalah yang tercepat. Bermain dengan dua pustaka hebat lainnya ini benar-benar menyoroti bahwa API gambar cukup kuno.
Bola voli licin; Saya sangat menikmati transportasi backend yang dapat dicolokkan,
dan mungkin akhirnya menjatuhkan AndroidAsync di sana. Prioritas permintaan
dan manajemen pembatalan bagus (jika Anda menggunakan jaringan)
Android-Universal-Image-Loader adalah yang paling populer
saat ini. Sangat dapat disesuaikan.
Perubahan mendatang dalam versi UIL baru (1.9.2):
Mempertimbangkan semua Android-Universal-Image-Loader ini memenuhi kebutuhan Anda ( Memuat gambar ada di disk secara lokal )!
sumber
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:
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:
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.
sumber
ImageLoader
kelas dan konfigurasi yang berbeda sebanyak yang Anda inginkan. Anda hanya perlu membuat subclassImageLoader
kelas. Lihat di sini: github.com/nostra13/Android-Universal-Image-Loader/issues/…Saya telah mengimplementasikan aplikasi yang seharusnya mendapatkan dan menampilkan gambar secara konstan dari internet. Saya akan memprogram mekanisme cache gambar, sebelumnya seorang teman merekomendasikan saya pemuat gambar universal.
UIL dapat disesuaikan dengan sangat baik. Ini sangat dapat disesuaikan sehingga seorang pemula dapat dengan mudah melakukan kesalahan. Namun, UIL dalam aplikasi saya lambat dan menjadi sedikit lebih lambat. Kasus penggunaan saya adalah ListView dengan gambar.
Kemarin saya mencari alternatif untuk UIL, dan saya menemukan Picasso. Picasso mudah diintegrasikan dan digunakan: Tepat
Picasso.context(context).load(url).into(imageview)
dan gambar dapat diintegrasikan dengan lebih cepat dan lancar.Bagi saya, Picasso jelas merupakan API yang akan digunakan. Pengalaman saya dengan UIL tidak bagus.
sumber
Saya pikir ImageLoader lebih dapat disesuaikan dan fleksibel dibandingkan dengan perpustakaan Picasso.
sumber