从 Volley 的角度来看,这里有一些满足您要求的优势:
一方面,Volley 完全专注于处理单个的小型 HTTP 请求。因此,如果您的 HTTP 请求处理有一些怪癖,Volley 可能会为您提供一个钩子。另一方面,如果您在图像处理方面有一个怪癖,那么您拥有的唯一真正的钩子就是ImageCache。“这不是什么都没有,但也不是很多!”。但它还有更多其他优点,例如一旦定义了请求,就可以在片段或活动中使用它们,这与并行 AsyncTasks 不同
Volley的优点和缺点:
那么 Volley 有什么好处呢?
网络部分不仅仅用于图像。Volley 旨在成为您后端不可或缺的一部分。对于基于简单 REST 服务的新项目,这可能是一个巨大的胜利。
NetworkImageView 在请求清理方面比 Picasso 更激进,在 GC 使用模式上也更保守。NetworkImageView 完全依赖于强内存引用,一旦对 ImageView 发出新请求,或者一旦 ImageView 移出屏幕,就会清理所有请求数据。
表现。这篇文章不会评估这种说法,但他们显然已经在他们的内存使用模式上采取了一些谨慎的态度。Volley 还努力批量回调主线程以减少上下文切换。
Volley 显然也有未来。如果您有兴趣,请查看 RequestFuture。
如果您正在处理高分辨率压缩图像,Volley 是这里唯一有效的解决方案。
Volley 可以与 Okhttp 一起使用(新版本的 Okhttp 支持 NIO 以获得更好的性能)
Volley 与 Activity 生命周期配合得很好。
Volley 的问题:
由于 Volley 是新的,所以很少有东西不支持,但它已经修复了。
多部分请求(解决方案:https ://github.com/vinaysshenoy/enhanced-volley )
状态码 201 被视为错误,从 200 到 207 的状态码现在是成功响应。(修复:https ://github.com/Vinayrraj/CustomVolley )
更新:在最新版本的 Google volley 中,2XX 状态码错误现已修复!感谢 Ficus Kirkpatrick!
它的文档较少,但很多人在 github 中支持 volley,可以在此处找到类似 java 的文档。在 android 开发者网站上,您可以找到使用 Volley 传输网络数据的指南。并且可以在Google Git找到 volley 源代码
要解决/更改Volley框架 的重定向策略,请使用带有 OkHTTP 的 Volley(上面提到的 CommonsWare)
你也可以阅读这篇Comparing Volley's image loading with Picasso
改造:
它由Square发布,它提供了非常易于使用的 REST API(更新:瞧!支持 NIO)
改造的优点:
更新:
- Retrofit 2.0.0-beta2 有很多非常好的变化
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%。Retrofit 的速度比 AsyncTask 快了 50% 到 90%,达到了相同的端点次数。在 Dashboard 测试套件上,这转化为加载/解析数据的速度要快几秒钟。这是一个巨大的现实世界差异。为了使测试公平,AsyncTasks/Volley 的时间包括 JSON 解析,因为 Retrofit 会自动为您完成。
RetroFit 在基准测试中获胜!
最后,我们决定为我们的应用程序使用 Retrofit。它不仅速度快得离谱,而且与我们现有的架构非常吻合。我们能够创建一个父回调接口,它可以自动执行错误处理、缓存和分页,而我们的 API 几乎不需要任何努力。为了在 Retrofit 中合并,我们必须重命名变量以使我们的模型符合 GSON,编写一些简单的接口,从旧 API 中删除函数,并修改我们的片段以不使用 AsyncTasks。现在我们已经完全转换了一些片段,这非常轻松。我们必须克服一些成长的痛苦和问题,但总体而言进展顺利。一开始,我们遇到了一些技术问题/错误,但 Square 有一个很棒的 Google+ 社区,能够帮助我们解决这个问题。
什么时候使用排球?!
当我们需要加载图像以及使用 REST API 时,我们可以使用 Volley!,网络调用队列系统需要同时处理许多 n/w 请求!Volley 也比 Retrofit 有更好的内存相关错误处理!
OkHttp可以和 Volley 一起使用,Retrofit 默认使用OkHttp!它具有SPDY支持、连接池、磁盘缓存、透明压缩!最近,它得到了一些带有Okio库的 java NIO 支持。
资料来源,信用:Josh Ruesch 先生的 volley-vs- retrofit
注意:关于流媒体,它取决于您想要的流媒体类型,例如 RTSP/RTCP。