Android中,HttpURLConnection与Apache的DefaultHttpClient哪个更被推荐使用?
在Android中,请求网络资源的方式包含了:HttpURLConnection和Apache的DefaultHttpClient。那么,这两个方式哪个更被推荐使用呢?Android官方文档为我们推荐HttpURLConnection,而理由是什么呢?
在Android 4.0,为HttpURLConnection增加了一个response cache(响应缓存),这是一个很好的减少http请求次数的机制,Android官方推荐使用HttpURLConnection而不是Apache的DefaultHttpClient的原因就是使用HttpURLConnection不仅有针对android做http请求的优化,而且还在4.0上增加了Reponse
Cache,这进一步提高了效率。
我们来看看官方的一个例子:使用反射机制开启HTTP response cache。
private void enableHttpResponseCache() { try { long httpCacheSize = 10 * 1024 * 1024; // 10 MiB File httpCacheDir = new File(getCacheDir(), "http"); Class.forName("android.net.http.HttpResponseCache") .getMethod("install", File.class, long.class) .invoke(null, httpCacheDir, httpCacheSize); } catch (Exception httpResponseCacheNotAvailable) { Log.d(TAG, "HTTP response cache is unavailable."); } }
上面例子,能够在Android 4.0以上的设备上开启response cache,并且不会影响到之前的程序。在cache被开启之后,所有cache中的HTTP请求都可以直接在本地存储中进行响应,当Android需要请求同样的资源时,通过cache,就不需要开启一个新的网络连接去获取资源了,而且被cache起来的response可以被server所确保没有过期,这样可以有效地减少带宽;而没有被cached的response会因方便下次请求而被存储在response cache中。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。