Глядя на перспективу залпа, вот некоторые преимущества для вашего требования:
Volley, с одной стороны, полностью сосредоточен на обработке отдельных небольших HTTP-запросов. Так что если у вашей обработки HTTP-запроса есть свои причуды, у Volley, вероятно, есть ловушка для вас. Если, с другой стороны, у вас есть странность в обработке изображений, единственная реальная ловушка - это ImageCache . «Это не ничего, но это не так много!» но у него есть и другие преимущества: например, после того, как вы определили свои запросы, их использование внутри фрагмента или действия безболезненно в отличие от параллельных AsyncTasks.
Плюсы и минусы залпа:
Так что хорошего в Волей?
Сетевая часть не только для изображений. Залп предназначен для того, чтобы стать неотъемлемой частью вашего бэкенда. Для нового проекта, основанного на простом сервисе REST, это может быть большой победой.
NetworkImageView более агрессивен в отношении очистки запросов, чем Picasso, и более консервативен в своих шаблонах использования GC. NetworkImageView полагается исключительно на сильные ссылки на память и очищает все данные запроса, как только будет сделан новый запрос для ImageView, или как только этот ImageView переместится за пределы экрана.
Представление. Этот пост не будет оценивать это утверждение, но они явно позаботились о том, чтобы быть разумными в своих моделях использования памяти. Volley также пытается пакетировать обратные вызовы в основной поток, чтобы уменьшить переключение контекста.
У Волли, видимо, тоже есть будущее. Проверьте RequestFuture, если вы заинтересованы.
Если вы имеете дело со сжатыми изображениями с высоким разрешением, Volley - единственное решение, которое работает хорошо.
Залп может быть использован с Okhttp (новая версия Okhttp поддерживает NIO для лучшей производительности)
Залп хорошо играет с жизненным циклом деятельности.
Проблемы с Volley:
поскольку Volley является новым, кое-что еще не поддерживается, но оно исправлено.
Составные запросы (решение: https://github.com/vinaysshenoy/enhanced-volley )
Код состояния 201 воспринимается как ошибка, Код состояния от 200 до 207 теперь являются успешными ответами. (Исправлено: https://github.com/Vinayrraj/CustomVolley )
Обновление: в последней версии Google залпа, то 2XX коды статуса ошибка является фиксированной теперь благодаря Ficus Киркпатрик!
это менее документировано, но многие люди поддерживают залп в github, java-подобную документацию можно найти здесь . На веб-сайте разработчика Android вы можете найти руководство по передаче сетевых данных с помощью Volley . И залп исходный код можно найти в Google Git
Чтобы решить / изменить Политику перенаправления Volley Framework, используйте Volley с OkHTTP (CommonsWare, упомянутый выше)
Также вы можете прочитать это Сравнение загрузки изображения залпа с Пикассо
Модифицированные:
Это выпущено Square , Это предлагает очень простой в использовании REST API (Обновление: Voila! С поддержкой NIO)
Плюсы модернизации:
По сравнению с Volley, REST API-код Retrofit является кратким, предоставляет отличную документацию по API и имеет хорошую поддержку в сообществах! Это очень легко добавить в проекты.
Мы можем использовать его с любой библиотекой сериализации, с обработкой ошибок.
Обновление:
- В Retrofit 2.0.0-beta2 есть много очень хороших изменений
- Версия 1.6 Retrofit с OkHttp 2.0 теперь зависит от Okio для поддержки java.io и java.nio, что упрощает доступ, хранение и обработку ваших данных, используя ByteString и Buffer, чтобы делать некоторые умные вещи для экономии ресурсов процессора и памяти. (К вашему сведению: это напоминает мне о библиотеке OIN Koush с поддержкой NIO!)
Мы можем использовать Retrofit вместе с RxJava для объединения и цепочки вызовов REST, используя rxObservables, чтобы избежать уродливых цепочек обратных вызовов (чтобы избежать ада обратного вызова !!) .
Минусы Retrofit для версии 1.6:
Функциональность обработки ошибок, связанных с памятью, не очень хорошая (в более старых версиях Retrofit / OkHttp), не уверен, что она улучшена с помощью Okio с поддержкой Java NIO.
Минимальная помощь при многопоточности может привести к обратному вызову ада, если мы используем это ненадлежащим образом.
(Все вышеперечисленные минусы были решены в новой версии Retrofit 2.0 beta)
================================================== ======================
Обновить:
Сравнение производительности Android Async и Volley против Retrofit (миллисекунды, чем меньше значение, тем лучше):
(К сведению выше, информация о тестах Retrofit улучшится с поддержкой Java NIO, потому что новая версия OKhttp зависит от библиотеки NIO Okio)
Во всех трех тестах с различными повторениями (1 - 25 раз) Volley был где-то на 50-75% быстрее. Дооснащение происходило с впечатляющей скоростью от 50% до 90% быстрее, чем задачи AsyncTasks, достигая одной и той же конечной точки такое же количество раз. В тестовом наборе Dashboard это привело к загрузке / анализу данных на несколько секунд быстрее. Это огромная разница в реальном мире. Чтобы сделать тесты честными, время для AsyncTasks / Volley включало анализ JSON, так как Retrofit делает это автоматически.
RetroFit Побед в тесте производительности!
В конце концов, мы решили использовать Retrofit для нашего приложения. Это не только смехотворно быстро, но и вполне соответствует нашей существующей архитектуре. Мы смогли создать родительский интерфейс обратного вызова, который автоматически выполняет обработку ошибок, кэширование и разбиение на страницы без каких-либо усилий для наших API. Чтобы объединить Retrofit, нам пришлось переименовать наши переменные, чтобы сделать наши модели совместимыми с GSON, написать несколько простых интерфейсов, удалить функции из старого API и изменить наши фрагменты, чтобы они не использовали AsyncTasks. Теперь, когда у нас есть несколько полностью преобразованных фрагментов, это довольно безболезненно. Были некоторые проблемы с ростом и проблемы, которые нам пришлось преодолеть, но в целом все прошло гладко. В начале мы столкнулись с несколькими техническими проблемами / ошибками, но у Square есть фантастическое сообщество Google+, которое помогло нам в этом.
Когда использовать залп ?!
Мы можем использовать Volley, когда нам нужно загрузить изображения, а также использовать API-интерфейсы REST! Система очередей сетевых вызовов необходима для выполнения множества запросов одновременно! также Volley имеет лучшую обработку ошибок, связанных с памятью, чем Retrofit!
OkHttp можно использовать с Volley, Retrofit по умолчанию использует OkHttp ! Имеет поддержку SPDY , пул соединений, кеширование дисков, прозрачное сжатие! Недавно он получил некоторую поддержку Java NIO с библиотекой Okio .
Источник, кредит: залп против модернизации г-н Джош Рюш
Примечание: о потоковой передаче зависит от того, какой тип потоковой передачи вы хотите, например, RTSP / RTCP.