Looking at the Volley perspective here are some advantages for your requirement:
Volley, on one hand, is totally focused on handling individual, small HTTP requests. So if your HTTP request handling has some quirks, Volley probably has a hook for you. If, on the other hand, you have a quirk in your image handling, the only real hook you have is ImageCache. "It’s not nothing, but it’s not a lot!, either". but it has more other advantages like Once you define your requests, using them from within a fragment or activity is painless unlike parallel AsyncTasks
Pros and cons of Volley:
So what’s nice about Volley?
The networking part isn’t just for images. Volley is intended to be
an integral part of your back end. For a fresh project based off of a
simple REST service, this could be a big win.
NetworkImageView is more aggressive about request cleanup than
Picasso, and more conservative in its GC usage patterns.
NetworkImageView relies exclusively on strong memory references, and
cleans up all request data as soon as a new request is made for an
ImageView, or as soon as that ImageView moves offscreen.
Performance. This post won’t evaluate this claim, but they’ve clearly
taken some care to be judicious in their memory usage patterns.
Volley also makes an effort to batch callbacks to the main thread to
reduce context switching.
Volley apparently has futures, too. Check out RequestFuture if you’re
interested.
If you’re dealing with high-resolution compressed images, Volley is
the only solution here that works well.
Volley can be used with Okhttp (New version of Okhttp supports NIO for better performance )
Volley plays nice with the Activity life cycle.
Problems With Volley:
Since Volley is new, few things are not supported yet, but it's fixed.
Multipart Requests (Solution: https://github.com/vinaysshenoy/enhanced-volley)
status code 201 is taken as an error, Status code from 200 to 207 are successful responses now.(Fixed: https://github.com/Vinayrraj/CustomVolley)
Update: in latest release of Google volley, the 2XX Status codes bug is fixed now!Thanks to Ficus Kirkpatrick!
it's less documented but many of the people are supporting volley in github, java like documentation can be found here.
On android developer website, you may find guide for Transmitting Network Data Using Volley. And volley source code can be found at Google Git
To solve/change Redirect Policy of Volley Framework use Volley with OkHTTP (CommonsWare mentioned above)
Also you can read this Comparing Volley's image loading with Picasso
Retrofit:
It's released by Square, This offers very easy to use REST API's (Update: Voila! with NIO support)
Pros of Retrofit:
Compared to Volley, Retrofit's REST API code is brief and provides
excellent API documentation and has good support in communities!
It is very easy to add into the projects.
We can use it with any serialization library, with error handling.
Update:
There are plenty of very good changes in Retrofit 2.0.0-beta2
version 1.6 of Retrofit with OkHttp 2.0 is now dependent on Okio to support java.io and java.nio which makes it much easier to access, store and process your data using ByteString and Buffer to do some clever things to save CPU and memory. (FYI: This reminds me of the Koush's OIN library with NIO support!)
We can use Retrofit together with RxJava to combine and chain REST calls using rxObservables to avoid ugly callback chains (to avoid callback hell!!).
Cons of Retrofit for version 1.6:
Memory related error handling functionality is not good (in older versions of Retrofit/OkHttp) not sure if it's improved with the Okio with Java NIO support.
Minimum threading assistance can result call back hell if we use this
in an improper way.
(All above Cons have been solved in the new version of Retrofit 2.0 beta)
========================================================================
Update:
Android Async vs Volley vs Retrofit performance benchmarks (milliseconds, lower value is better):
Library |
One Discussion |
Dashboard (7 requests) |
25 Discussions |
AsyncTask |
941 ms |
4,539 ms |
13,957 ms |
Volley |
560 ms |
2,202 ms |
4,275 ms |
Retrofit |
312 ms |
889 ms |
1,059 ms |
(FYI above Retrofit Benchmarks info will improve with java NIO support because the new version of OKhttp is dependent on NIO Okio library)
In all three tests with varying repeats (1 – 25 times), Volley was
anywhere from 50% to 75% faster. Retrofit clocked in at an impressive
50% to 90% faster than the AsyncTasks, hitting the same endpoint the
same number of times. On the Dashboard test suite, this translated
into loading/parsing the data several seconds faster. That is a
massive real-world difference. In order to make the tests fair, the
times for AsyncTasks/Volley included the JSON parsing as Retrofit does
it for you automatically.
RetroFit Wins in benchmark test!
In the end, we decided to go with Retrofit for our application. Not
only is it ridiculously fast, but it meshes quite well with our
existing architecture. We were able to make a parent Callback
Interface that automatically performs error handling, caching, and
pagination with little to no effort for our APIs. In order to merge in
Retrofit, we had to rename our variables to make our models GSON
compliant, write a few simple interfaces, delete functions from the
old API, and modify our fragments to not use AsyncTasks. Now that we
have a few fragments completely converted, it’s pretty painless. There
were some growing pains and issues that we had to overcome, but
overall it went smoothly. In the beginning, we ran into a few
technical issues/bugs, but Square has a fantastic Google+ community
that was able to help us through it.
When to use Volley?!
We can use Volley when we need to load images as well as consuming REST APIs!, network call queuing system is needed for many n/w request at the same time! also Volley has better memory related error handling than Retrofit!
OkHttp can be used with Volley, Retrofit uses OkHttp by default! It has SPDY support, connection pooling, disk caching, transparent compression! Recently, it has got some support of java NIO with Okio library.
Source, credit: volley-vs-retrofit by Mr. Josh Ruesch
Note: About streaming it depends on what type of streaming you want like RTSP/RTCP.