Bu 3 kütüphane ile deneyimlerimi paylaşmak istiyorum: UIL, Picasso ve Volley. Daha önce UIL kullandım ama sonra gerçekten tavsiye edemediğim sonucuna vardım ve onun yerine çok yetenekli takımlar tarafından geliştirilen Volley veya Picasso'yu kullanmanızı öneririm. UIL hiç de fena değil ama diğer iki kütüphanenin detaylarına dikkat etmiyor.
UIL'i UI performansıyla daha az hoş buldum; UI iş parçacığını Volley veya Picasso'dan daha fazla kilitleme eğilimindedir. Bu kısmen, Picasso ve Volley bunu varsayılan olarak yaparken UIL'in görüntü yanıtlarını toplu olarak desteklememesinden kaynaklanıyor olabilir.
Ayrıca, UIL'in disk önbellek sistemini de beğenmedim. Çeşitli uygulamalar arasında seçim mümkün olmakla birlikte, şu anda ÜSİ diski önbellek sınırlamak için hiçbir yol olduğunu işaret etmek gerek her iki toplam boyuta varlık sona erme süresine göre . Volley ve Picasso bunu yapar ve UIL bunu göz ardı ederken sunucu tarafından döndürülen sona erme süresini varsayılan olarak kullanırlar.
Son olarak, UIL, seçilen disk önbelleği ve bellek önbellek uygulamalarını ve diğer ayrıntıları içeren genel bir görüntü yükleyici yapılandırması ayarlamanıza olanak tanır, ancak bu yapılandırma uygulamanızın her yerinde uygulanacaktır. Dolayısıyla, iki ayrı disk önbelleği gibi daha fazla esnekliğe ihtiyacınız varsa, bu UIL için uygun değildir. Öte yandan Volley, her biri kendi konfigürasyonuna sahip, istediğiniz kadar ayrı görüntü yükleyiciye sahip olmanıza olanak tanır. Picasso varsayılan olarak global bir örnek kullanır, ancak ayrıca ayrı ayrı yapılandırılabilir örnekler oluşturmanıza da izin verir.
Özetlemek gerekirse: Picasso en iyi API'ye sahiptir, ancak HttpURLConnection
bazı durumlarda çok kısıtlayıcı olabilen tüm örnekler arasında paylaşılan genel HTTP disk önbelleğini kullanır . Volley en iyi performansa ve modülerliğe sahiptir ancak daha az kullanıcı dostudur ve istediğiniz gibi çalışması için kendi modülünüzden bir veya iki tane yazmanızı gerektirir. Genel olarak ikisini de ÜSİ'ye karşı tavsiye ederim.
Düzenleme (18 Aralık 2014): Bu ilk cevabı yazdığımdan beri işler değişti ve onu iyileştirmenin gerekli olduğunu hissettim:
Picasso 2.4, eski sürümlerden daha da yapılandırılabilirdir ve OkHttp ile birlikte kullanıldığında (ki bu şiddetle tavsiye edilir) ayrıca her örnek için ayrı bir disk önbelleği kullanabilir, böylece yapabilecekleriniz konusunda gerçekten hiçbir kısıtlama yoktur. Daha da önemlisi, Picasso ve OkHttp'nin performansının çok geliştiğini ve bence artık Android için en hızlı resim yükleyici çözümü olduğunu fark ettim . Lütfen kodumda bellek kullanımını azaltmak ve UI iş parçacığında bitmap yeniden boyutlandırmalarından kaçınmak için veya .fit()
birlikte kullandığımı unutmayın . Picasso aktif olarak geliştirildi ve desteklendi ve bu kesinlikle büyük bir artı..centerCrop()
.centerInside()
Voleybol o kadar da değişmedi ama bu arada iki sorunu fark ettim:
- Bazen ağır yük altında, bazı disk önbelleğinin bozulması nedeniyle bazı görüntüler artık yüklenmez.
- Bir NetworkImageView'da görüntülenen küçük resimler (ölçek türü centerCrop olarak ayarlanmış olarak), diğer kitaplıklarla elde ettiğinize kıyasla oldukça bulanıktır.
Bu nedenlerden dolayı Voleybolu kullanmayı bırakmaya karar verdim.
UIL hala yavaştır (özellikle disk önbelleği) ve API'sinin oldukça sık değişme eğilimi vardır.
Picasso benzeri bir API ile Picasso'dan daha optimize olduğunu iddia eden Glide 3 adlı bu yeni kitaplığı da test ettim . Kişisel deneyimlerime göre, OkHttp ile birlikte kullanıldığında bile, ağır yük altındaki ağ istekleri sırasında Picasso ve Volley'den daha yavaş. Daha kötüsü, bir etkinlikten çıkarken uygulamalarımın Lollipop altında birkaç çökmesine neden oldu. Rakiplerine göre hala 2 avantajı var:
- Animasyonlu GIF kod çözmeyi destekler
- Son ölçeği küçültülmüş bitmap'leri disk önbelleğine koyar, bu da disk önbelleğinden okumanın son derece hızlı olduğu anlamına gelir.
Sonuç: Şimdi Picasso + OkHttp'yi kullanmanızı tavsiye ediyorum çünkü en iyi esnekliği, API'yi, performansı ve kararlılığı bir arada sunuyor. GIF desteğine ihtiyacınız varsa Glide'ı da düşünebilirsiniz.