这是okhttp-2.5.0.jar和okio-1.6.0.jar下载,一个3年左右的(de)老项目,项目(mù)开始(shǐ)的时候okhttp还不像现在这(zhè)么火,基本(běn)上使用HttpURLConnection类来实现所有(yǒu)的HTTP请求,当时(shí)采用的是xUtils框(kuàng)架来实(shí)现异步的,回调(diào)式的接口请求。现(xiàn)在发现xUtils这套(tào)框架存在(zài)几个很大的问题。
1、xUtils的图(tú)片加载任(rèn)务会阻塞Http请求,因为(wéi)xUtils中的图片加载框架BitmapUtils和(hé)网(wǎng)络(luò)请求(qiú)框架HttpUtils的线程池是共用的,这个线程(chéng)池(chí)的大小默认为(wéi)3,也就是说(shuō)当我在下载图(tú)片的时(shí)候(hòu)会阻塞Http请求数据接口的任务。这样会带来一个严(yán)重后(hòu)果,当一个页面图片很多(duō)的时(shí)候,我打开一个新的页面,新的页面需要下载相应的json字符串来显示,但是(shì)由于线程池里(lǐ)满满的都是图片下载任务(wù),所以用户必须等所有(yǒu)图片都下载完毕之后(hòu)才能调json的接口,本来很快就(jiù)可以显示的页面(miàn)现在却要等无意(yì)义的图片的下载,大大降低了用户体验。
2、xUtils框架连接(jiē)握手(shǒu)太频繁,根据抓(zhuā)包(bāo)结果来(lái)看,xUtils在完成一次Http请求(qiú)之后,会主动发送挥(huī)手的FIN报文,将(jiāng)TCP连(lián)接关(guān)闭。这样(yàng)的(de)话如果短(duǎn)期内频(pín)繁请求同一(yī)个服务器多次,那么每次都要(yào)重新进行(háng)三次握手的步骤,浪费了(le)许多(duō)时间,根(gēn)据抓包结果(guǒ)来看,大约每次连接(jiē)会浪费300ms左右的时间。抓包截图如下
可以看出倒数第3行是(shì)由androids客户端主(zhǔ)动向服务器发(fā)送FIN报文,而且发送的时间是紧接着接口数据传输完毕后的。也就是说几乎没有进行连接保活,这(zhè)样(yàng)如果短时间请求(qiú)同一个接口(kǒu)多次的(de)话,每次调用都会执行一次握手,大量的握手会消耗大量的时间,不(bú)适(shì)合(hé)目前(qián)APP会大(dà)量调用接(jiē)口的情况。
3、androids 6.0发布之后,谷歌已经将(jiāng)所有旧版的HttpURLConnection,HttpClient,和(hé)一(yī)些和apache有关包的类(lèi)和方法定义为过时方法,并且androids SDK 23之后不再内置(zhì)旧版的类(lèi)和接口,需要额(é)外引(yǐn)用(yòng)jar包,为(wéi)了代码的健壮性也需要抛弃旧版androids的(de)HTTP框架。
okhttp3 jar包是款非常实用的OKhttp的(de)jar包;它可(kě)以支(zhī)持大家这androids网络框架生进行使用,并且可以支(zhī)持处理网络请求(qiú)的开源项目,也是目(mù)前为止最火的轻(qīng)量级框架,只要(yào)使用了这款okhttp3 jar,就可(kě)让您这进行设计或(huò)者开发轻(qīng)量级框(kuàng)架的时候,更(gèng)加的轻(qīng)松,也更(gèng)加的方便;软件的操作(zuò)简单,无需安(ān)装,下(xià)载即可使(shǐ)用,需要的朋友赶快将软件(jiàn)下载来使用试试吧(ba)!
·允许连接到(dào)同一个主机地址的所(suǒ)有(yǒu)请(qǐng)求(qiú),提高请求效率
·共享Socket,减少对服务器的请求次数
·通(tōng)过(guò)连接(jiē)池,减少了请求(qiú)延迟
·缓(huǎn)存响应数据(jù)来减少重复的网络请求(qiú)
·减少了对数据(jù)流量的消耗
·自动处理GZip压缩
