一个学习Android的iOS开发人员提出的两部分问题,他正在开发一个Android项目,该项目将提出从JSON到图像到音频和视频的流媒体下载的各种请求:
在iOS上,我广泛使用AFNetworking项目。Android上有类似的库吗? 我已经阅读了Square的OkHTTP和Retrofit,以及Volley,但还没有使用它们开发的经验。我希望有人能够为每种方法提供一些最佳用例的具体示例。从我所读到的,OkHTTP似乎是三个中最健壮的,并且可以处理这个项目的需求(上面提到过)。
一个学习Android的iOS开发人员提出的两部分问题,他正在开发一个Android项目,该项目将提出从JSON到图像到音频和视频的流媒体下载的各种请求:
在iOS上,我广泛使用AFNetworking项目。Android上有类似的库吗? 我已经阅读了Square的OkHTTP和Retrofit,以及Volley,但还没有使用它们开发的经验。我希望有人能够为每种方法提供一些最佳用例的具体示例。从我所读到的,OkHTTP似乎是三个中最健壮的,并且可以处理这个项目的需求(上面提到过)。
当前回答
我最近发现了一个名为ion的库,它为桌面带来了一些额外的功能。
ion拥有内置的图像下载支持,集成了ImageView, JSON(在GSON的帮助下),文件和非常方便的UI线程支持。
我在一个新项目上使用了它,到目前为止效果还不错。它的使用比Volley或Retrofit简单得多。
其他回答
我最近发现了一个名为ion的库,它为桌面带来了一些额外的功能。
ion拥有内置的图像下载支持,集成了ImageView, JSON(在GSON的帮助下),文件和非常方便的UI线程支持。
我在一个新项目上使用了它,到目前为止效果还不错。它的使用比Volley或Retrofit简单得多。
AFNetworking for Android:
快速Android网络在这里
快速Android网络库支持所有类型的HTTP/HTTPS请求,如GET, POST, DELETE, HEAD, PUT, PATCH
快速Android网络库支持下载任何类型的文件
快速Android网络库支持上传任何类型的文件(支持多部分上传)
快速Android网络库支持取消请求
快速Android网络库支持设置优先级为任何请求(LOW, MEDIUM, HIGH, IMMEDIATE)
快速Android网络库支持RxJava
由于它使用OkHttp作为网络层,它支持:
快速Android网络库支持HTTP/2支持允许对同一主机的所有请求共享一个套接字
快速Android网络库使用连接池,减少请求延迟(如果HTTP/2不可用)
透明的GZIP压缩下载大小
快速Android网络库支持响应缓存,完全避免网络重复请求
谢谢:图书馆是我创建的
还有另一个选择: https://github.com/apptik/jus
它像Volley一样是模块化的,但更多的扩展和文档正在改进,支持不同的HTTP堆栈和开箱即用的转换器 它有一个模块来生成服务器API接口映射,比如Retrofit 它还支持JavaRx
以及许多其他方便的功能,如标记,变形金刚等。
我希望有人能够为每种方法提供一些最佳用例的具体示例。
如果您正在与Web服务通信,请使用Retrofit。如果您正在下载图像,请使用毕加索对等库。如果需要在Retrofit/Picasso之外执行HTTP操作,请使用OkHTTP。
Volley与Retrofit + Picasso大致竞争。好的方面是,它是一个库。缺点是,它是一个没有文档的、不受支持的、“把代码扔到墙上,然后在上面做一个I|O演示”的库。
编辑-排射现在正式支持谷歌。请参考谷歌开发者指南
据我所知,OkHTTP似乎是这三个中最健壮的
如果可以,Retrofit会自动使用OkHTTP。杰克·沃顿有个要点能把Volley和OkHTTP联系起来。
并能处理这个项目的要求(如上所述)。
根据“流媒体”的传统定义,你可能不会使用它们中的任何一个来“流式下载音频和视频”。相反,Android的媒体框架将为你处理这些HTTP请求。
也就是说,如果您打算尝试自己的基于http的流,OkHTTP应该处理这种情况;我不记得Volley会如何处理这种情况。无论是Retrofit还是Picasso都不是为此而设计的。
异步HTTP客户端loopj vs. Volley
我的项目的细节是小的HTTP REST请求,每1-5分钟一次。
我使用异步HTTP客户端(1.4.1)很长一段时间。性能优于使用普通的Apache httpClient或HTTP URL连接。无论如何,新版本的库不适合我:库内部异常切断回调链。
阅读所有的答案激励我尝试一些新的东西。我选择了Volley HTTP库。
使用一段时间后,即使没有测试,我清楚地看到,响应时间下降到1.5倍,2倍的排射。
也许Retrofit比异步HTTP客户端更好?我得试试。 但我确定Volley不适合我。