Si l'on considère le point de vue de Volley, voici quelques avantages pour vos besoins :
Volley, quant à lui, est totalement axé sur la gestion de petites requêtes HTTP individuelles. Ainsi, si votre gestion des requêtes HTTP présente quelques bizarreries, Volley a probablement un crochet pour vous. Si, d'un autre côté, vous avez une bizarrerie dans votre gestion des images, le seul vrai crochet que vous avez est ImageCache . "Ce n'est pas rien, mais ce n'est pas beaucoup non plus". mais il a d'autres avantages comme Une fois que vous avez défini vos requêtes, les utiliser à partir d'un fragment ou d'une activité est sans douleur, contrairement aux AsyncTasks parallèles.
Avantages et inconvénients de Volley :
Qu'est-ce qui est bien avec Volley ?
-
La mise en réseau n'est pas réservée aux images. Volley se veut partie intégrante de votre back-end. Pour un nouveau projet basé sur un simple service REST, cela pourrait être une grande victoire.
-
NetworkImageView est plus agressif dans le nettoyage des requêtes que Picasso, et plus conservateur dans ses schémas d'utilisation du GC. NetworkImageView s'appuie exclusivement sur des références de mémoire fortes et nettoie toutes les données de requête dès qu'une nouvelle requête est faite pour une ImageView, ou dès que cette ImageView quitte l'écran.
-
Performance. Ce billet n'évaluera pas cette affirmation, mais il est clair qu'ils ont clairement pris soin d'être judicieux dans leurs schémas d'utilisation de la mémoire. Volley s'efforce également de regrouper les callbacks dans le thread principal afin de pour réduire le changement de contexte.
-
Volley a apparemment aussi des avenirs. Consultez RequestFuture si vous êtes intéressés.
-
Si vous avez affaire à des images compressées à haute résolution, Volley est la solution idéale. la seule solution qui fonctionne bien.
-
Volley peut être utilisé avec Okhttp (la nouvelle version d'Okhttp supporte NIO pour de meilleures performances).
-
Volley s'intègre parfaitement dans le cycle de vie de l'activité.
Problèmes avec Volley :
Comme Volley est nouveau, certaines choses ne sont pas encore supportées, mais elles sont corrigées.
-
Demandes multipartites (Solution : https://github.com/vinaysshenoy/enhanced-volley )
-
Le code d'état 201 est considéré comme une erreur, les codes d'état de 200 à 207 sont maintenant des réponses positives (corrigé) : https://github.com/Vinayrraj/CustomVolley )
Mise à jour : dans la dernière version de Google volley, le bogue des codes d'état 2XX est fixe Merci à Ficus Kirkpatrick !
-
il est moins documenté mais de nombreuses personnes soutiennent volley sur github, on peut y trouver une documentation de type java aquí . Sur le site web des développeurs Android, vous pouvez trouver un guide pour Transmission de données de réseau à l'aide de Volley . Le code source de volley est disponible à l'adresse suivante Google Git
-
Résoudre/changer Politique de redirection de Volley Utilisation du cadre Volley avec OkHTTP (CommonsWare mentionné ci-dessus)
Vous pouvez également lire ceci Comparaison entre le chargement d'images de Volley et Picasso
Rénovation :
Il est publié par Carré Il offre des API REST très faciles à utiliser (Mise à jour : Voila ! avec le support NIO)
Avantages de la modernisation :
-
Par rapport à Volley, le code de l'API REST de Retrofit est bref et fournit une excellente documentation sur l'API et bénéficie d'un bon soutien de la part des communautés ! Il est très facile de l'ajouter dans les projets.
-
Nous pouvons l'utiliser avec n'importe quelle bibliothèque de sérialisation, en gérant les erreurs.
Mise à jour : - Il y a beaucoup de très bons changements dans Retrofit 2.0.0-beta2
- La version 1.6 de Retrofit with OkHttp 2.0 est maintenant dépendante de Okio pour soutenir java.io y java.nio qui facilite grandement l'accès, le stockage et le traitement de vos données à l'aide de Chaîne d'octets y Tampon de faire des choses intelligentes pour économiser le processeur et la mémoire. (Pour information : cela me rappelle l'histoire de la L'OIN de Koush avec support NIO !) Nous pouvons utiliser Rétrofit avec RxJava pour combiner et enchaîner des appels REST en utilisant rxObservables pour éviter les vilaines chaînes de callbacks (pour éviter l'enfer du callback !!) .
Les inconvénients de Retrofit pour la version 1.6 :
-
La fonctionnalité de gestion des erreurs liées à la mémoire n'est pas bonne (dans les anciennes versions de Retrofit/OkHttp). Je ne sais pas si elle a été améliorée avec Okio et le support Java NIO.
-
L'assistance minimale en matière de filtrage peut entraîner un enfer de rappel si l'on utilise cette méthode. d'une manière inappropriée.
(Tous les problèmes ci-dessus ont été résolus dans la nouvelle version de Retrofit 2.0 beta)
\========================================================================
Mise à jour :
Comparaison des performances entre Android Async, Volley et Retrofit (en millisecondes, la valeur la plus faible étant la meilleure) :
(Pour information, les informations ci-dessus sur les benchmarks Retrofit s'amélioreront avec la prise en charge de java NIO car la nouvelle version d'OKhttp dépend de la bibliothèque NIO Okio).
Dans les trois tests avec des répétitions variables (1 - de 50 % à 75 % plus rapide. Retrofit a obtenu un score impressionnant de 50 % à 90 % plus rapide que les AsyncTasks, en atteignant le même point de le même nombre de fois. Sur la suite de tests Dashboard, cela s'est traduit par que le chargement et l'analyse des données s'effectuaient plusieurs secondes plus rapidement. Il s'agit là d'une différence énorme dans le monde réel. Pour que les tests soient équitables, l'option temps pour AsyncTasks/Volley incluent l'analyse JSON comme le fait Retrofit Retrofit le fait automatiquement pour vous.
RetroFit remporte un test de référence !
Finalement, nous avons opté pour Retrofit pour notre application. Non seulement non seulement il est ridiculement rapide, mais il s'intègre très bien dans notre architecture existante. Nous avons pu créer une interface Callback qui effectue automatiquement la gestion des erreurs, la mise en cache et la et la pagination, avec peu ou pas d'effort pour nos API. Afin de fusionner avec Retrofit, nous avons dû renommer nos variables pour rendre nos modèles GSON écrire quelques interfaces simples, supprimer des fonctions de l'ancienne API l'ancienne API, et modifier nos fragments pour ne pas utiliser AsyncTasks. Maintenant que nous quelques fragments complètement convertis, c'est assez facile. Il y a eu Il y a eu quelques difficultés de croissance et des problèmes que nous avons dû surmonter, mais dans l'ensemble cela s'est déroulé sans problème. mais dans l'ensemble, tout s'est bien passé. Au début, nous avons rencontré quelques problèmes techniques, mais Square dispose d'une fantastique communauté Google+ qui qui nous a aidés à résoudre ces problèmes.
Quand utiliser Volley ?!
Nous pouvons utiliser Volley lorsque nous avons besoin de charger des images ainsi que de consommer des API REST, un système de file d'attente d'appels réseau est nécessaire pour de nombreuses requêtes n/w en même temps ! De plus, Volley gère mieux les erreurs liées à la mémoire que Retrofit !
OkHttp peut être utilisé avec Volley, Retrofit utilise OkHttp par défaut ! Il a SPDY support, pooling de connexions, mise en cache du disque, compression transparente ! Récemment, il a obtenu le support de java NIO avec Okio bibliothèque.
Source, crédit : volley-vs-retrofit par M. Josh Ruesch
Nota: En ce qui concerne le streaming, cela dépend du type de streaming que vous souhaitez, comme RTSP/RTCP.
3 votes
Si vous utilisez la mise en œuvre interne de HttpUrlConnection, vous devriez considérer que HttpUrlConnection effectue des réessais silencieux sur les demandes POST. Cela m'a causé beaucoup de dommage. Pour plus d'informations, consultez ici: stackoverflow.com/a/37675253/2061089
1 votes
Si quelqu'un a besoin de la liste de toutes les bibliothèques de mise en réseau, vous pouvez la trouver sur mon article de blog androidredman.wordpress.com/2017/06/26/…
0 votes
Volley peut fonctionner avec l'ancien Apache, HttpUrlConnection, Apache-4 ou OkHttp. Alors que Retrofit ne fonctionne vraiment qu'avec OkHttp. Retrofit est beaucoup plus facile à configurer.