Volley perspektifine bakmak, gereksiniminiz için bazı avantajlar:
Volley, bir yandan tamamen bireysel, küçük HTTP isteklerini ele almaya odaklanmıştır. HTTP istek işleminizde bazı tuhaflıklar varsa, Volley muhtemelen sizin için bir kancaya sahiptir. Öte yandan, görüntü işlemede bir tuhaflık varsa, sahip olduğunuz tek gerçek kanca ImageCache'dir . "Hiçbir şey değil, ama çok da değil!" ancak isteklerinizi tanımladıktan sonra, bir parçanın veya aktivitenin içinden kullanmak paralel AsyncTasks'ın aksine ağrısızdır
Volley'nin artıları ve eksileri:
Volley'nin nesi güzel?
Ağ bölümü yalnızca görüntüler için değil. Volley, arka ucunuzun ayrılmaz bir parçası olarak tasarlanmıştır. Basit bir REST hizmetine dayanan yeni bir proje için bu büyük bir kazanç olabilir.
NetworkImageView, talep temizleme konusunda Picasso'dan daha agresif ve GC kullanım modellerinde daha muhafazakar. NetworkImageView yalnızca güçlü bellek referanslarına dayanır ve bir ImageView için yeni bir istek yapılır yapılmaz veya ImageView ekran dışına çıkar çıkmaz tüm talep verilerini temizler.
Verim. Bu gönderi bu iddiayı değerlendirmeyecek, ancak bellek kullanım kalıplarında mantıklı olmaya özen gösterdiler. Volley ayrıca içerik geçişini azaltmak için ana iş parçacığındaki geri çağrıları topluyor.
Volley'nin de gelecekleri var. Eğer ilgileniyorsanız RequestFuture göz atın.
Yüksek çözünürlüklü sıkıştırılmış görüntülerle uğraşıyorsanız, Volley burada iyi çalışan tek çözümdür.
Volley, Okhttp ile kullanılabilir (Okhttp'nin yeni sürümü, daha iyi performans için NIO'yu destekler)
Volley, Etkinlik yaşam döngüsü ile iyi oynuyor.
Volley ile İlgili Sorunlar:
Volley yeni olduğu için henüz birkaç şey desteklenmiyor, ancak düzeltildi.
Çok Parçalı İstekler (Çözüm: https://github.com/vinaysshenoy/enhanced-volley )
durum kodu 201 bir hata olarak alınır, 200'den 207'ye kadar olan durum kodu şu anda başarılı yanıtlardır (Sabit: https://github.com/Vinayrraj/CustomVolley )
Güncelleme: Google voleybolu en son sürümünde, 2XX Durum kodları hatası düzeltildi ! Ficus Kirkpatrick sayesinde!
daha az belgelenmiştir ancak çoğu insan github'da voleybolu desteklemektedir, java benzeri belgeler burada bulunabilir . Android geliştirici web sitesinde, Voleybolu Ağ Verilerinin Aktarılması için rehber bulabilirsiniz . Ve volley kaynak kodu Google Git'te bulunabilir
Volley Framework Yönlendirme Politikasını çözmek / değiştirmek için OkHTTP ile Volley kullanın (CommonsWare yukarıda belirtilmiştir)
Ayrıca bu karşılaştırma Volley görüntü yükleme Picasso ile okuyabilirsiniz
Güçlendirme:
Square tarafından piyasaya sürüldü , REST API'lerinin kullanımı çok kolay (Güncelleme: NIO desteği ile Voila!)
Güçlendirme Artıları:
Volley ile karşılaştırıldığında, Retrofit'in REST API kodu kısadır ve mükemmel API belgeleri sağlar ve topluluklarda iyi bir desteğe sahiptir! Projelere eklemek çok kolay.
Hata işleme ile herhangi bir serileştirme kitaplığıyla kullanabiliriz.
Güncelleme:
- Retrofit 2.0.0-beta2'de çok iyi değişiklikler var
- OkHttp 2.0 ile Retrofit sürümü 1.6 şimdi bağlıdır Okio destek için java.io ve java.nio erişimi, mağazaya çok daha kolay hale getirir ve kullanarak verilerinizi işlemek bytestring ve Tampon CPU ve bellek kaydetmek için bazı akıllı şeyler yapmak. (FYI: Bu bana Koush'ın NIO desteği olan OIN kütüphanesini hatırlatıyor !) Çirkin geri arama zincirlerinden kaçınmak için (geri arama cehenneminden kaçınmak için!) Rx çağrılarını kullanarak RxJava ile birlikte Retrofit'i RxJava ile birlikte
kullanabiliriz .
Sürüm 1.6 için Güçlendirme Eksileri:
Bellekle ilgili hata işleme işlevselliği iyi değil (Retrofit / OkHttp'nin eski sürümlerinde) Okio with Java NIO desteği ile geliştirilmiş olup olmadığından emin değil.
Bunu uygun olmayan bir şekilde kullanırsak, minimum diş açma yardımı cehenneme geri dönebilir.
(Tüm Eksileri Retrofit 2.0 beta'nın yeni sürümünde çözülmüştür)
================================================== ======================
Güncelleme:
Android Async vs Volley vs Retrofit performans testleri (milisaniye, düşük değer daha iyi):
(Retrofit Benchmarks bilgilerinin üzerindeki FYI, java NIO desteği ile gelişecektir çünkü OKhttp'nin yeni sürümü NIO Okio kütüphanesine bağımlıdır)
Değişen tekrarlara sahip üç testin hepsinde (1-25 kez), Volley% 50 ila% 75 daha hızlıydı. Retrofit, AsyncTasks'tan% 50 ila% 90 gibi etkileyici bir hızla saat hızına ulaştı ve aynı uç noktaya aynı sayıda çarptı. Gösterge Tablosu test paketinde bu, verilerin birkaç saniye daha hızlı yüklenmesi / ayrıştırılması anlamına gelir. Bu büyük bir gerçek dünya farkıdır. Testleri adil hale getirmek için, AsyncTasks / Volley süreleri, Retrofit'in sizin için otomatik olarak yaptığı gibi JSON ayrıştırmasını içeriyordu.
RetroFit Benchmark Testinde Kazandı!
Sonunda, başvurumuz için Retrofit ile gitmeye karar verdik. Sadece gülünç derecede hızlı değil, aynı zamanda mevcut mimarimizle de oldukça iyi örtüşüyor. API'larımız için çok az çaba göstererek veya hiç çaba harcamadan otomatik olarak hata işleme, önbellekleme ve sayfalandırma gerçekleştiren bir üst Geri Arama Arayüzü oluşturabildik. Retrofit'te birleştirmek için, modellerimizi GSON uyumlu hale getirmek, birkaç basit arayüz yazmak, eski API'dan işlevleri silmek ve AsyncTasks'ı kullanmamak için fragmanlarımızı değiştirmek için değişkenlerimizi yeniden adlandırmamız gerekiyordu. Şimdi tamamen dönüştürülmüş birkaç parçamız var, oldukça ağrısız. Üstesinden gelmemiz gereken bazı büyüyen ağrılar ve sorunlar vardı, ancak genel olarak sorunsuz gitti. Başlangıçta birkaç teknik sorun / hatayla karşılaştık, ancak Square'de bize yardımcı olabilecek harika bir Google+ topluluğu var.
Volley ne zaman kullanılır ?!
Görüntüleri yüklememiz ve REST API'leri tüketmemiz gerektiğinde Volley'i kullanabiliriz, aynı anda birçok n / w isteği için ağ çağrısı kuyruk sistemi gereklidir! ayrıca Volley, Retrofit!
OkHttp Volley ile kullanılabilir, Retrofit varsayılan olarak OkHttp kullanır ! It has spdy destek, bağlantı havuzu, disk önbelleği, şeffaf sıkıştırma! Son zamanlarda, Okio kütüphanesi ile java NIO desteği var .
Kaynak, kredi: volley-vs-retrofit Bay Josh Ruesch
Not: Akış hakkında, RTSP / RTCP gibi istediğiniz akış türüne bağlıdır.