Guardando la prospettiva Volley qui ci sono alcuni vantaggi per le tue esigenze:
Volley, da un lato, è totalmente concentrato sulla gestione di singole richieste HTTP di piccole dimensioni. Quindi, se la gestione delle richieste HTTP presenta alcune stranezze, Volley probabilmente ha un gancio per te. Se, d'altra parte, hai una stranezza nella gestione delle immagini, l'unico vero gancio che hai è ImageCache . "Non è niente, ma non è molto!". ma presenta altri vantaggi come Una volta definite le richieste, utilizzarle da un frammento o un'attività è indolore a differenza di AsyncTask parallele
Pro e contro di Volley:
Cosa c'è di bello in Volley?
La parte di rete non è solo per le immagini. Volley è pensato per essere parte integrante del tuo back-end. Per un nuovo progetto basato su un semplice servizio REST, questa potrebbe essere una grande vittoria.
NetworkImageView è più aggressivo nella pulizia delle richieste rispetto a Picasso e più conservativo nei suoi schemi di utilizzo dei GC. NetworkImageView si basa esclusivamente su forti riferimenti di memoria e pulisce tutti i dati delle richieste non appena viene effettuata una nuova richiesta per ImageView o non appena ImageView si sposta dallo schermo.
Prestazione. Questo post non valuterà questa affermazione, ma hanno chiaramente preso cura di essere giudiziosi nei loro schemi di utilizzo della memoria. Volley si impegna inoltre a richiamare in batch il thread principale per ridurre il cambio di contesto.
Apparentemente anche Volley ha dei futuri. Dai un'occhiata a RequestFuture se sei interessato.
Se hai a che fare con immagini compresse ad alta risoluzione, Volley è l'unica soluzione che funziona bene.
Volley può essere utilizzato con Okhttp (la nuova versione di Okhttp supporta NIO per prestazioni migliori)
Volley gioca bene con il ciclo di vita delle attività.
Problemi con Volley:
dato che Volley è nuovo, poche cose non sono ancora supportate, ma è stato risolto.
Richieste in più parti (soluzione: https://github.com/vinaysshenoy/enhanced-volley )
il codice di stato 201 viene considerato come errore, i codici di stato da 200 a 207 ora hanno una risposta corretta. (Risolto: https://github.com/Vinayrraj/CustomVolley )
Aggiornamento: nell'ultima versione di Google volley, il bug dei codici di stato 2XX è stato corretto ora! Grazie a Ficus Kirkpatrick!
è meno documentato ma molte persone supportano la pallavolo in github, qui è possibile trovare documentazione simile a Java . Sul sito Web degli sviluppatori Android, è possibile trovare una guida per la trasmissione dei dati di rete tramite Volley . E il codice sorgente di volley è disponibile su Google Git
Per risolvere / modificare la politica di reindirizzamento di Volley Framework utilizzare Volley con OkHTTP (CommonsWare sopra menzionato)
Puoi anche leggere questo Confronto del caricamento dell'immagine di Volley con Picasso
Ammodernamento:
È rilasciato da Square , offre API REST molto facili da usare (Aggiornamento: Voila! Con supporto NIO)
Pro di retrofit:
Rispetto a Volley, il codice API REST di Retrofit è breve e fornisce un'eccellente documentazione API e ha un buon supporto nelle comunità! È molto facile da aggiungere ai progetti.
Possiamo usarlo con qualsiasi libreria di serializzazione, con gestione degli errori.
Aggiornamento:
- Ci sono molte modifiche molto buone in Retrofit 2.0.0-beta2
- la versione 1.6 di Retrofit con OkHttp 2.0 ora dipende da Okio per supportare java.io e java.nio, il che rende molto più semplice l'accesso, l'archiviazione e l'elaborazione dei dati utilizzando ByteString e Buffer per fare alcune cose intelligenti per risparmiare CPU e memoria. (FYI: Questo mi ricorda la libreria OIN di Koush con supporto NIO!)
Possiamo usare Retrofit insieme a RxJava per combinare e concatenare le chiamate REST usando rxObservables per evitare brutte catene di callback (per evitare l'inferno di callback !!) .
Contro di Retrofit per la versione 1.6:
La funzionalità di gestione degli errori relativi alla memoria non è buona (nelle versioni precedenti di Retrofit / OkHttp) non sono sicuro che sia migliorato con Okio con supporto Java NIO.
L'assistenza minima di threading può comportare il richiamo dell'inferno se lo utilizziamo in modo improprio.
(Tutti i contro sopra sono stati risolti nella nuova versione di Retrofit 2.0 beta)
================================================== ======================
Aggiornare:
Benchmark delle prestazioni di Android Async vs Volley vs Retrofit (millisecondi, valore inferiore è migliore):
(I FYI sopra le informazioni sui benchmark di retrofit miglioreranno con il supporto java NIO perché la nuova versione di OKhttp dipende dalla libreria NIO Okio)
In tutti e tre i test con ripetute variabili (da 1 a 25 volte), Volley è stata ovunque dal 50% al 75% più veloce. Il retrofit ha registrato un impressionante aumento del 50% -90% rispetto agli AsyncTask, colpendo lo stesso endpoint lo stesso numero di volte. Nella suite di test Dashboard, questo si è tradotto nel caricamento / analisi dei dati più rapidamente di alcuni secondi. Questa è una grande differenza nel mondo reale. Al fine di rendere i test equi, i tempi per AsyncTasks / Volley includevano l'analisi JSON mentre Retrofit lo fa automaticamente.
RetroFit vince nel test benchmark!
Alla fine, abbiamo deciso di utilizzare Retrofit per la nostra applicazione. Non solo è incredibilmente veloce, ma si adatta abbastanza bene alla nostra architettura esistente. Siamo stati in grado di creare un'interfaccia di callback padre che esegue automaticamente la gestione degli errori, la memorizzazione nella cache e l'impaginazione con uno sforzo minimo o nullo per le nostre API. Per unirci in Retrofit, abbiamo dovuto rinominare le nostre variabili per rendere i nostri modelli conformi GSON, scrivere alcune semplici interfacce, eliminare le funzioni dalla vecchia API e modificare i nostri frammenti per non usare AsyncTasks. Ora che abbiamo alcuni frammenti completamente convertiti, è abbastanza indolore. Ci sono stati alcuni problemi e problemi in crescita che abbiamo dovuto superare, ma nel complesso è andato tutto liscio. All'inizio, abbiamo riscontrato alcuni problemi / bug tecnici, ma Square ha una fantastica community Google+ che è stata in grado di aiutarci.
Quando usare Volley ?!
Possiamo usare Volley quando dobbiamo caricare immagini e consumare API REST !, per molte richieste n / n è necessario il sistema di accodamento delle chiamate di rete! anche Volley ha una migliore gestione degli errori relativi alla memoria rispetto a Retrofit!
OkHttp può essere utilizzato con Volley, Retrofit utilizza OkHttp per impostazione predefinita! Ha il supporto SPDY , pool di connessioni, cache del disco, compressione trasparente! Di recente, ha ottenuto il supporto di Java NIO con la libreria Okio .
Fonte, credito: volley-vs-retrofit di Mr. Josh Ruesch
Nota: lo streaming dipende dal tipo di streaming desiderato come RTSP / RTCP.