从 Volley 的角度来看,这里有一些满足您要求的优势:
一方面,Volley 完全专注于处理单个的小型 HTTP 请求。因此,如果您的 HTTP 请求处理有一些怪癖,Volley 可能会为您提供一个钩子。另一方面,如果您在图像处理方面有一个怪癖,那么唯一真正的钩子就是 ImageCache。 “这不是什么都没有,但也不是很多!”。但它还有更多其他优点,例如一旦定义了请求,就可以在片段或活动中使用它们,这与并行 AsyncTask 不同
Volley 的优缺点:
那么 Volley 有什么好处呢?
网络部分不仅仅用于图像。排球的目的是
后端的一个组成部分。对于一个基于
简单的 REST 服务,这可能是一个巨大的胜利。
NetworkImageView 在请求清理方面比
Picasso,并且在其 GC 使用模式上更加保守。
NetworkImageView 完全依赖于强内存引用,并且
一旦对
ImageView,或者只要 ImageView 移出屏幕。
性能。这篇文章不会评估这种说法,但他们已经清楚
在他们的内存使用模式上采取了一些谨慎的态度。
Volley 还努力批量回调到主线程以
减少上下文切换。
Volley 显然也有未来。如果您是,请查看 RequestFuture
有兴趣。
如果您正在处理高分辨率压缩图像,Volley 是
这里唯一有效的解决方案。
Volley 可以与 Okhttp 一起使用(新版本的 Okhttp 支持 NIO 以获得更好的性能)
Volley 在 Activity 生命周期中表现出色。
排球问题:
由于 Volley 是新的,因此尚不支持一些东西,但它已修复。
多部分请求(解决方案:https://github.com/vinaysshenoy/enhanced-volley)
-
状态码 201 被视为错误,状态码 200 到 207 现在是成功响应。(固定:https://github.com/Vinayrraj/CustomVolley)
更新:在最新版本的 Google volley 中,2XX 状态码错误现在是 fixed!感谢 Ficus Kirkpatrick!
文档较少,但很多人在 github 中支持 volley,可以在 here 找到类似 java 的文档。
在 android 开发者网站上,您可以找到Transmitting Network Data Using Volley 的指南。并且volley源码可以在Google Git
找到
要解决/更改Redirect Policy of Volley 框架使用Volley with OkHTTP(上面提到的CommonsWare)
你也可以阅读这个Comparing Volley's image loading with Picasso
改造:
它由Square 发布,它提供了非常易于使用的 REST API(更新:瞧!支持 NIO)
改造的优点:
更新:
- Retrofit 2.0.0-beta2 有很多非常好的变化
- Retrofit with OkHttp 2.0 的 1.6 版现在依赖于 Okio 来支持 java.io 和 java.nio 这使得它使用 ByteString 和 Buffer 可以更轻松地访问、存储和处理您的数据,以做一些聪明的事情来节省 CPU 和内存。 (仅供参考:这让我想起了支持 NIO 的 Koush's OIN 库!)
我们可以使用Retrofit together with RxJava 来组合和链接REST 调用,使用rxObservables 来避免丑陋的回调链(避免回调地狱!!)。
1.6 版改造的缺点:
(以上所有Cons都已在新版Retrofit 2.0 beta中解决)
================================================ ==========================
更新:
Android Async vs Volley vs Retrofit 性能基准(毫秒,值越低越好):
(仅供参考,Retrofit Benchmarks 信息将通过 java NIO 支持得到改进,因为新版本的 OKhttp 依赖于 NIO Okio 库)
在所有三个重复次数不同(1 到 25 次)的测试中,Volley
速度从 50% 到 75% 不等。改造以令人印象深刻的速度进行
比 AsyncTask 快 50% 到 90%,到达相同的端点
相同的次数。在仪表板测试套件上,这已翻译
更快地加载/解析数据几秒钟。这是一个
巨大的现实世界差异。为了使考试公平,
AsyncTasks/Volley 的时间包括 JSON 解析,就像 Retrofit 一样
它会自动为您服务。
RetroFit 在基准测试中获胜!
最后,我们决定为我们的应用程序使用 Retrofit。不是
只是速度快得离谱,但它与我们的
现有架构。我们能够进行父回调
自动执行错误处理、缓存和
分页对我们的 API 几乎没有任何努力。为了融入
改造,我们必须重命名我们的变量以使我们的模型 GSON
合规,写几个简单的接口,删除函数
旧 API,并修改我们的片段以不使用 AsyncTasks。现在我们
有几个片段完全转换,这很无痛。那里
是一些成长的痛苦和我们必须克服的问题,但是
总体来说进展顺利。一开始,我们遇到了几个
技术问题/错误,但 Square 有一个很棒的 Google+ 社区
这能够帮助我们度过难关。
什么时候使用 Volley?!
当我们需要加载图像以及使用 REST API 时,我们可以使用 Volley!,网络调用队列系统需要同时处理许多 n/w 请求! Volley 也比 Retrofit 有更好的内存相关错误处理!
OkHttp可以和Volley一起使用,Retrofit默认使用OkHttp!它具有SPDY 支持、连接池、磁盘缓存、透明压缩!最近,它通过 Okio 库获得了对 java NIO 的一些支持。
来源,来源:volley-vs-retrofit Josh Ruesch 先生
注意:关于流媒体,这取决于您想要的流媒体类型,例如 RTSP/RTCP。