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中。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值