为啥我应该使用 OkHttp 而不是 android httpClient 和 AsyncTask
Posted
技术标签:
【中文标题】为啥我应该使用 OkHttp 而不是 android httpClient 和 AsyncTask【英文标题】:Why should I use OkHttp instead of android httpClient and AsyncTask为什么我应该使用 OkHttp 而不是 android httpClient 和 AsyncTask 【发布时间】:2014-11-02 13:54:30 【问题描述】:Paresh Mayani 在 SpeakerDeck (https://speakerdeck.com/pareshmayani/lazy-android-developers-be-productive) 的演讲中说,最好使用 OkHttp
或 Retrofit
而不是 AsyncTask
和 DefaultHttpClient
。
我的问题是为什么? 为什么它们更快? 这些不也是基于默认 android 类的库吗? OkHttp 和 Retrofit 有什么区别?
【问题讨论】:
【参考方案1】:与往常一样,工程设计是权衡取舍,以构建满足您需求的最佳解决方案。
使用库而不是平台就是一个很好的例子。该平台的 API 已经存在了很长一段时间,出于兼容性原因,Android 团队在更改这些接口方面的灵活性较低。图书馆没有这些限制。例如,如果主机支持,OkHttp 可以使用 SPDY 协议来降低延迟、压缩、多路复用等,这可以使您的 Android 应用程序响应更快。
Square 的项目 OkHttp 和 Retrofit 可以一起工作。它们也是常规的 Java 库,因此它们不依赖于/基于 Android。 OkHttp 处理较低级别的 HTTP 连接细节,而 Retrofit 简化了 REST API 的使用。 Retrofit 可以在 OkHttp 之上使用,但不是必须的。
查看项目网站,它们也托管在 github 上。
http://square.github.io/okhttp/
http://square.github.io/retrofit/
【讨论】:
以上是关于为啥我应该使用 OkHttp 而不是 android httpClient 和 AsyncTask的主要内容,如果未能解决你的问题,请参考以下文章
为啥我应该使用 LoadBalancerProbe 而不是订阅 RoleEnvironment.StatusCheck 事件?
为啥我应该使用 CString 的 GetBuffer 成员而不是 SetAt?
Android:何时/为啥我应该使用 FrameLayout 而不是 Fragment?
为啥我应该使用 char 而不是 varchar? [复制]