一个学习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网络库支持响应缓存,完全避免网络重复请求

谢谢:图书馆是我创建的