请教一下Android网络有关的几个工具之间的关系。
我对Android了解很少,尝试百度后没有遇见比较满意的答复,应该是我的问题太奇怪了,太简单了。。。。
HttpClient
HttpURLConnection
他们是Android请求网络用到的较为底层的实现,通过他我们可以自己封装一个网络请求工具。也只有通过他我们才能进行网络请求?
可以说他们是同级的?
volley
retrofit
他们是基于之前两者的封装,是一套成熟的网络请求框架。
okhttp
我不清楚这个okhttp这个应该算和Hurl同一概念的底层请求网络手段吗?
另外想请问一下,HttpClient他们实际底层实现就是Socket通信吧?
但是我在看volley介绍时说它适合请求频繁的操作(看到过大神的博客说在接受数据时会使用算法分配一块合适的已经存在的内存空间,提高了效率(这个手段我在学习binder机制的时候好像也看到过,在binder驱动层里也有类似的一块区域)),但是我记得Socket连接和断开都会耗费资源难道他不是基于Socket的?
小弟愚昧,希望有大神可以帮解惑,多多纠正我的错误观念。感激不尽!!感激不尽!!
PHPz2017-04-18 09:08:18
다음과 같이 나눌 수 있습니다.
하위 레이어: HttpClient, HttpURLConnection, okhttp
네트워크 요청 프레임워크: Volley, Retrofit
ringa_lee2017-04-18 09:08:18
그러한 의심이 들기 위해서는 먼저 네트워크 프로토콜 계층 계층, 특히 HTTP, 소켓 및 TCP/UDP 간의 관계에 대한 관련 지식을 이해하는 것이 좋습니다. 당신이 언급한 프레임워크와 API에 관해서는 모두 http 프로토콜의 캡슐화 구현을 기반으로 한다고 간단히 생각할 수 있습니다. Retrofit은 좀 더 높은 수준이고 맨 아래 레이어는 okhttp에 의해 구현됩니다.