Olhando para a perspectiva do Volley, aqui estão algumas vantagens para sua exigência:
O Volley, por um lado, está totalmente focado no tratamento de pequenas solicitações HTTP individuais. Portanto, se o tratamento de solicitações HTTP tiver algumas peculiaridades, o Volley provavelmente terá um gancho para você. Se, por outro lado, você tem uma peculiaridade na manipulação de imagens, o único gancho real que você tem é o ImageCache . "Não é nada, mas também não é muito!". mas tem mais outras vantagens, como Depois de definir suas solicitações, usá-las em um fragmento ou atividade é indolor, ao contrário do AsyncTasks paralelo
Prós e contras de Volley:
Então, o que há de bom no Volley?
A parte da rede não é apenas para imagens. O Volley pretende ser parte integrante do seu back-end. Para um novo projeto baseado em um serviço REST simples, isso pode ser uma grande vitória.
O NetworkImageView é mais agressivo quanto à limpeza de solicitações do que o Picasso e mais conservador em seus padrões de uso de GC. O NetworkImageView se baseia exclusivamente em referências de memória forte e limpa todos os dados da solicitação assim que uma nova solicitação é feita para um ImageView, ou assim que o ImageView sai da tela.
Atuação. Esta postagem não avaliará essa afirmação, mas eles claramente tomaram o cuidado de julgar seus padrões de uso de memória. O Volley também faz um esforço para fazer retornos de chamada em lote para o thread principal para reduzir a alternância de contexto.
O vôlei aparentemente também tem futuro. Confira RequestFuture se você estiver interessado.
Se você estiver lidando com imagens compactadas de alta resolução, o Volley é a única solução aqui que funciona bem.
O vôlei pode ser usado com o Okhttp (a nova versão do Okhttp suporta NIO para melhor desempenho)
O vôlei joga bem com o ciclo de vida da atividade.
Problemas com o Volley:
Como o Volley é novo, poucas coisas ainda não são suportadas, mas são corrigidas.
Solicitações de várias partes (solução: https://github.com/vinaysshenoy/enhanced-volley )
o código de status 201 é considerado um erro, o código de status de 200 a 207 é uma resposta bem-sucedida agora. (Corrigido: https://github.com/Vinayrraj/CustomVolley )
Atualização: na última versão do Google Volley, o bug dos códigos de status 2XX foi corrigido agora! Graças a Ficus Kirkpatrick!
é menos documentado, mas muitas pessoas suportam vôlei no github; documentação semelhante a java pode ser encontrada aqui . No site do desenvolvedor Android, você pode encontrar um guia para transmissão de dados de rede usando vôlei . E o código fonte do vôlei pode ser encontrado no Google Git
Para resolver / alterar a política de redirecionamento do Volley Framework, use o Volley com OkHTTP (CommonsWare mencionado acima)
Também é possível ler este carregamento de imagem do Volley Comparing com Picasso
Retrofit:
É lançado pela Square , oferece uma API REST muito fácil de usar (atualização: Voila! Com suporte a NIO)
Profissionais do Retrofit:
Comparado ao Volley, o código da API REST da Retrofit é breve e fornece excelente documentação da API e tem bom suporte nas comunidades! É muito fácil adicionar os projetos.
Podemos usá-lo com qualquer biblioteca de serialização, com tratamento de erros.
Atualização:
- Existem muitas mudanças muito boas no Retrofit 2.0.0-beta2
- a versão 1.6 do Retrofit com OkHttp 2.0 agora depende do Okio para suportar java.io e java.nio, o que facilita o acesso, o armazenamento e o processamento de dados usando o ByteString e o Buffer para fazer algumas coisas inteligentes para economizar CPU e memória. (FYI: Isso me lembra a biblioteca OIN da Koush com suporte a NIO!)
Podemos usar o Retrofit junto com o RxJava para combinar e encadear chamadas REST usando rxObservables para evitar cadeias feias de retorno de chamada (para evitar o inferno de retorno de chamada !!) .
Contras do Retrofit para a versão 1.6:
A funcionalidade de tratamento de erros relacionados à memória não é boa (nas versões anteriores do Retrofit / OkHttp), não tenho certeza se foi aprimorada com o suporte do Okio com Java NIO.
A assistência mínima de encadeamento pode resultar em retorno do inferno se usarmos isso de maneira inadequada.
(Todos os Contras acima foram resolvidos na nova versão do Retrofit 2.0 beta)
==================================================== ======================
Atualizar:
Benchmarks de desempenho do Android Async vs Volley vs Retrofit (milissegundos, menor valor é melhor):
(A informação acima das informações de benchmarking para retrofit melhorará com o suporte a java NIO porque a nova versão do OKhttp depende da biblioteca NIO Okio)
Nos três testes com repetições variadas (1 a 25 vezes), o Volley foi de 50% a 75% mais rápido. O retrofit atingiu um tempo impressionante de 50% a 90% mais rápido que o AsyncTasks, atingindo o mesmo terminal no mesmo número de vezes. No conjunto de testes do Dashboard, isso se traduz em carregar / analisar os dados vários segundos mais rapidamente. Essa é uma enorme diferença no mundo real. Para tornar os testes justos, os tempos para AsyncTasks / Volley incluíram a análise JSON, pois o Retrofit faz isso automaticamente para você.
RetroFit vence no teste de benchmark!
No final, decidimos usar o Retrofit para nossa aplicação. Não só é ridiculamente rápido, mas também combina muito bem com a nossa arquitetura existente. Conseguimos criar uma Interface de retorno de chamada pai que executa automaticamente o tratamento de erros, o cache e a paginação com pouco ou nenhum esforço para nossas APIs. Para mesclar o Retrofit, tivemos que renomear nossas variáveis para tornar nossos modelos compatíveis com GSON, escrever algumas interfaces simples, excluir funções da API antiga e modificar nossos fragmentos para não usar AsyncTasks. Agora que temos alguns fragmentos completamente convertidos, é bastante indolor. Houve algumas dores e problemas crescentes que tivemos que superar, mas no geral tudo correu bem. No começo, tivemos alguns problemas / bugs técnicos, mas a Square tem uma fantástica comunidade do Google+ que nos ajudou a resolvê-la.
Quando usar o Volley ?!
Podemos usar o Volley quando precisamos carregar imagens e consumir APIs REST !, o sistema de enfileiramento de chamadas de rede é necessário para muitas solicitações n / w ao mesmo tempo! O Volley também possui melhor manipulação de erros relacionados à memória que o Retrofit!
OkHttp pode ser usado com o Volley, Retrofit usa OkHttp por padrão! Possui suporte SPDY , pool de conexões, cache de disco, compactação transparente! Recentemente, ele recebeu algum suporte do Java NIO com a biblioteca Okio .
Fonte, crédito: volley-vs-retrofit do Sr. Josh Ruesch
Nota: Sobre o streaming, depende do tipo de streaming que você deseja, como RTSP / RTCP.