Android异步网络访问框架

HttpClient

Apache开源库,拥有大量API提供高度灵活性,实现稳定,主要用于 SDK 2.1、2.2 版本,替代存在逻辑缺陷的 HttpURLConnection
在 SDK 6.0 中被移除,要使用时需要添加以下脚本到 build.gradle :

android {
    useLibrary 'org.apache.http.legacy'
}

HttpURLConnection

Android SDK 内置的底层网络访问库,比 Apache 的库更轻量易用,SDK 2.3 开始推荐使用该库取代 HttpClient
大部分网络访问框架均属于该库的上层封装版本。

OkHttp

Square 公司出品的高性能底层网络访问库,支持同步、异步,而且实现了 spdy、http2、websocket 协议,封装了线程池、数据转换、参数使用、错误处理等,API 简洁易用,和 Volley 一样实现了 HTTP 协议的缓存。
典型的上层封装框架有:Retrofit、Volley、picasso


Volley

Google 推出的网络通信库,简单易用,扩展性强,适用于数据量小而频繁的网络API异步访问,同时支持网络图片加载。
底层请求库支持在 HttpUrlConnection, HttpClient, OkHttp 中任意切换。

Volley提供的功能

  • JSON,图像等的异步下载(NetworkImageView、ImageLoader
  • 网络请求的排序(scheduling)
  • 网络请求的优先级处理
  • LRU缓存
  • 多级别取消请求
  • 和Activity和生命周期的联动(Activity 结束时同时取消所有网络请求)

不适用场景

  • 大型文件下载(应考虑使用 Download Manager
  • 文件上传(可考虑使用 OkHttp
  • 流媒体

Retrofit

Square 公司出品的 RESTful 异步网络访问库,底层使用 Okhttp 进行封装,可灵活扩展,原生支持与 RxJava 配合使用。
可通过注解配置请求参数,各种转换器、适配器、反序列化工具可自由定义使用,学习成本比 Volley 稍高。
对请求响应的 REST规范 执行比较严格。

android-async-http

底层基于 Apache 的 HttpClient 的上层封装框架,随着 HttpClient 的失宠而逐渐失去市场。目前不再维护。


参考:
  • Android开源项目推荐之「网络请求哪家强」
  • Android开源项目推荐之「图片加载到底哪家强」

你可能感兴趣的:(Android异步网络访问框架)