Wenn Sie sich die Volley-Perspektive ansehen, sehen Sie hier einige Vorteile für Ihre Anforderung:
Volley konzentriert sich einerseits ganz auf die Bearbeitung einzelner, kleiner HTTP-Anfragen. Wenn Ihre HTTP-Anforderungsbearbeitung einige Besonderheiten aufweist, hat Volley wahrscheinlich einen Haken für Sie. Wenn Sie andererseits eine Eigenart in Ihrer Bildverarbeitung haben, ist ImageCache der einzige echte Haken, den Sie haben . "Es ist nicht nichts, aber es ist auch nicht viel!" Aber es hat noch weitere Vorteile wie Sobald Sie Ihre Anforderungen definiert haben, ist die Verwendung innerhalb eines Fragments oder einer Aktivität im Gegensatz zu parallelen AsyncTasks problemlos
Vor- und Nachteile von Volley:
Was ist schön an Volley?
Der Netzwerkteil ist nicht nur für Bilder. Volley soll ein wesentlicher Bestandteil Ihres Backends sein. Für ein neues Projekt, das auf einem einfachen REST-Service basiert, könnte dies ein großer Gewinn sein.
NetworkImageView ist aggressiver in Bezug auf die Bereinigung von Anforderungen als Picasso und konservativer in seinen GC-Verwendungsmustern. NetworkImageView verwendet ausschließlich starke Speicherreferenzen und bereinigt alle Anforderungsdaten, sobald eine neue Anforderung für eine ImageView gestellt wird oder sobald diese ImageView vom Bildschirm verschoben wird.
Performance. In diesem Beitrag wird diese Behauptung nicht bewertet, aber sie haben eindeutig darauf geachtet, in ihren Speichernutzungsmustern vernünftig zu sein. Volley bemüht sich auch, Rückrufe an den Hauptthread zu stapeln, um die Kontextumschaltung zu reduzieren.
Volley hat offenbar auch Zukunft. Schauen Sie sich RequestFuture an, wenn Sie interessiert sind.
Wenn Sie mit hochauflösenden komprimierten Bildern arbeiten, ist Volley die einzige Lösung, die hier gut funktioniert.
Volley kann mit Okhttp verwendet werden (neue Version von Okhttp unterstützt NIO für eine bessere Leistung)
Volley spielt gut mit dem Aktivitätslebenszyklus.
Probleme mit Volley:
Da Volley neu ist, werden einige Dinge noch nicht unterstützt, aber es ist behoben.
Mehrteilige Anfragen (Lösung: https://github.com/vinaysshenoy/enhanced-volley )
Der Statuscode 201 wird als Fehler angesehen. Der Statuscode von 200 bis 207 ist jetzt eine erfolgreiche Antwort. (Behoben: https://github.com/Vinayrraj/CustomVolley )
Update: In der neuesten Version von Google Volley ist der Fehler mit den 2XX-Statuscodes jetzt behoben ! Dank an Ficus Kirkpatrick!
Es ist weniger dokumentiert, aber viele Leute unterstützen Volleyball in Github. Eine Java-ähnliche Dokumentation finden Sie hier . Auf der Android-Entwickler-Website finden Sie möglicherweise eine Anleitung zum Übertragen von Netzwerkdaten mit Volley . Und Volley-Quellcode finden Sie bei Google Git
Verwenden Sie zum Lösen / Ändern der Umleitungsrichtlinie von Volley Framework Volley mit OkHTTP (CommonsWare oben erwähnt).
Sie können auch das Vergleichen des Bildladens von Volley mit Picasso lesen
Nachrüstung:
Es wird von Square veröffentlicht. Dies bietet sehr einfach zu verwendende REST-APIs (Update: Voila! Mit NIO-Unterstützung)
Vorteile der Nachrüstung:
Im Vergleich zu Volley ist der REST-API-Code von Retrofit kurz und bietet eine hervorragende API-Dokumentation sowie gute Unterstützung in Communities! Es ist sehr einfach, in die Projekte hinzuzufügen.
Wir können es mit jeder Serialisierungsbibliothek mit Fehlerbehandlung verwenden.
Update:
- In Retrofit 2.0.0-beta2 gibt es viele sehr gute Änderungen
- Version 1.6 von Retrofit mit OkHttp 2.0 ist nun abhängig von Okio zu Unterstützung java.io und java.nio die es viel leichter zugänglich, zu speichern macht und Ihre Daten mit Hilfe verarbeitet ByteString und Buffer einige cleveren Dinge zu tun , CPU und Speicher zu sparen. (FYI: Dies erinnert mich an die OIN- Bibliothek von Koush mit NIO-Unterstützung!)
Wir können Retrofit zusammen mit RxJava verwenden , um REST-Aufrufe mit rxObservables zu kombinieren und zu verketten , um hässliche Rückrufketten zu vermeiden (um Rückrufhölle zu vermeiden !!) .
Nachteile der Nachrüstung für Version 1.6:
Die speicherbezogene Fehlerbehandlungsfunktion ist nicht gut (in älteren Versionen von Retrofit / OkHttp) und nicht sicher, ob sie mit Okio mit Java NIO-Unterstützung verbessert wurde.
Wenn wir dies nicht ordnungsgemäß verwenden, kann dies zu einer minimalen Unterstützung beim Einfädeln führen.
(Alle oben genannten Nachteile wurden in der neuen Version von Retrofit 2.0 Beta behoben.)
================================================== ======================
Aktualisieren:
Leistungsbenchmarks für Android Async vs Volley vs Retrofit (Millisekunden, niedrigerer Wert ist besser):
(Zu Ihrer Information über den Informationen zu Retrofit-Benchmarks werden sich die Java NIO-Unterstützung verbessern, da die neue Version von OKhttp von der NIO Okio-Bibliothek abhängig ist.)
In allen drei Tests mit unterschiedlichen Wiederholungen (1 - 25 Mal) war Volley zwischen 50% und 75% schneller. Die Nachrüstung wurde mit beeindruckenden 50% bis 90% schneller als die AsyncTasks durchgeführt und traf denselben Endpunkt genauso oft. In der Dashboard-Testsuite führte dies dazu, dass die Daten einige Sekunden schneller geladen / analysiert wurden. Das ist ein massiver Unterschied in der realen Welt. Um die Tests fair zu gestalten, enthielten die Zeiten für AsyncTasks / Volley die JSON-Analyse, da Retrofit dies automatisch für Sie erledigt.
RetroFit gewinnt im Benchmark-Test!
Am Ende haben wir uns für Retrofit für unsere Anwendung entschieden. Es ist nicht nur lächerlich schnell, sondern passt auch sehr gut zu unserer bestehenden Architektur. Wir konnten ein übergeordnetes Callback-Interface erstellen, das automatisch Fehlerbehandlung, Caching und Paginierung durchführt, ohne dass unsere APIs einen geringen oder gar keinen Aufwand erfordern. Um in Retrofit zusammenzuführen, mussten wir unsere Variablen umbenennen, um unsere Modelle GSON-kompatibel zu machen, einige einfache Schnittstellen zu schreiben, Funktionen aus der alten API zu löschen und unsere Fragmente so zu ändern, dass keine AsyncTasks verwendet werden. Jetzt, wo wir ein paar Fragmente vollständig konvertiert haben, ist es ziemlich schmerzlos. Es gab einige wachsende Schmerzen und Probleme, die wir überwinden mussten, aber insgesamt verlief alles reibungslos. Am Anfang hatten wir einige technische Probleme / Fehler, aber Square hat eine fantastische Google+ Community, die uns dabei helfen konnte.
Wann soll man Volley benutzen?!
Wir können Volley verwenden, wenn wir Bilder laden und REST-APIs verwenden müssen. Für viele n / w-Anfragen wird gleichzeitig ein Warteschlangensystem für Netzwerkanrufe benötigt! Auch Volley hat eine bessere speicherbezogene Fehlerbehandlung als Retrofit!
OkHttp kann mit Volley verwendet werden, Retrofit verwendet standardmäßig OkHttp ! Es bietet SPDY- Unterstützung, Verbindungspooling, Festplatten-Caching und transparente Komprimierung! Vor kurzem wurde Java NIO mit der Okio- Bibliothek unterstützt.
Quelle, Gutschrift: Volley-gegen-Nachrüstung von Herrn Josh Ruesch
Hinweis: Beim Streaming hängt es davon ab, welche Art von Streaming Sie wie RTSP / RTCP wünschen.