一个学习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简单得多。
Retrofit 1.9.0 vs RoboSpice
我在我的应用程序中使用这两种。
当我解析嵌套的JSON类时,Robospice比Retrofit工作得更快。因为Spice Manger会为你做任何事。在Retrofit中,您需要创建GsonConverter并反序列化它。
我在同一个活动中创建了两个片段,并使用两个相同类型的url同时调用。
09-23 20:12:32.830 16002-16002/com.urbanpro.seeker E/RETROFIT﹕ RestAdapter Init
09-23 20:12:32.833 16002-16002/com.urbanpro.seeker E/RETROFIT﹕ calling the method
09-23 20:12:32.837 16002-16002/com.urbanpro.seeker E/ROBOSPICE﹕ initialzig spice manager
09-23 20:12:32.860 16002-16002/com.urbanpro.seeker E/ROBOSPICE﹕ Executing the method
09-23 20:12:33.537 16002-16002/com.urbanpro.seeker E/ROBOSPICE﹕ on SUcceess
09-23 20:12:33.553 16002-16002/com.urbanpro.seeker E/ROBOSPICE﹕ gettting the all contents
09-23 20:12:33.601 16002-21819/com.urbanpro.seeker E/RETROFIT﹕ deseriazation starts
09-23 20:12:33.603 16002-21819/com.urbanpro.seeker E/RETROFIT﹕ deseriazation ends
还有另一个选择: https://github.com/apptik/jus
它像Volley一样是模块化的,但更多的扩展和文档正在改进,支持不同的HTTP堆栈和开箱即用的转换器 它有一个模块来生成服务器API接口映射,比如Retrofit 它还支持JavaRx
以及许多其他方便的功能,如标记,变形金刚等。
异步HTTP客户端loopj vs. Volley
我的项目的细节是小的HTTP REST请求,每1-5分钟一次。
我使用异步HTTP客户端(1.4.1)很长一段时间。性能优于使用普通的Apache httpClient或HTTP URL连接。无论如何,新版本的库不适合我:库内部异常切断回调链。
阅读所有的答案激励我尝试一些新的东西。我选择了Volley HTTP库。
使用一段时间后,即使没有测试,我清楚地看到,响应时间下降到1.5倍,2倍的排射。
也许Retrofit比异步HTTP客户端更好?我得试试。 但我确定Volley不适合我。
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网络库支持响应缓存,完全避免网络重复请求
谢谢:图书馆是我创建的