Android开源框架AsyncHttpClient (android-async-http)使用

 android-async-http 开源框架可以使我们轻松地获取网络数据或者向服务器发送数据,最关键的是,它是异步框架,在底层使用线程池处理并发请求,效率很高,使用又特别简单。

    以往我们在安卓上做项目,比如要下载很多图片、网页或者其他的资源,多数开发者会选择一个线程一个下载任务这种模型,因为安卓自带的 AndroidHttpClient 或者 java 带的 java.net.URL ,默认都是阻塞式操作。这种模型效率不高,对并发要求高的 APP 来讲,并不适用。有的人会选择使用 nio 自己实现,代码复杂度又很高。

    AsyncHttpClient 作为 android-async-http 框架的一个核心应用类,使用简单,可以处理文本、二进制等各种格式的 web 资源。下面提供一些代码来看如何使用:

[java]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. public class Downloader {  
  2.     public static AsyncHttpClient mHttpc = new AsyncHttpClient();  
  3.     public static String TAG = "Downloader";  
  4.       
  5.     public void downloadText(String uri){  
  6.         mHttpc.get(uri, nullnew AsyncHttpResponseHandler(){  
  7.             @Override  
  8.             public void onSuccess(String data){  
  9.                 Log.i(TAG, "downloaded, thread id " + Thread.currentThread().getId());  
  10.                 // TODO: do something on  
  11.             }  
  12.             @Override  
  13.             public void onFailure(Throwable e, String data){  
  14.                 Log.i(TAG, "download failed.");  
  15.                 // TODO: error proceed  
  16.             }  
  17.         });  
  18.     }  
  19.       
  20.     public void downloadImage(String uri, String savePath){  
  21.         mHttpc.get(uri, new ImageResponseHandler(savePath));  
  22.     }  
  23.       
  24.     public class ImageResponseHandler extends BinaryHttpResponseHandler{  
  25.         private String mSavePath;  
  26.           
  27.         public ImageResponseHandler(String savePath){  
  28.             super();  
  29.             mSavePath = savePath;  
  30.         }  
  31.         @Override  
  32.         public void onSuccess(byte[] data){  
  33.             Log.i(TAG, "download image, file length " + data.length);  
  34.             // TODO: save image , do something on image  
  35.         }  
  36.         @Override  
  37.         public void onFailure(Throwable e, String data){  
  38.             Log.i(TAG, "download failed");  
  39.             // TODO : error proceed  
  40.         }  
  41.     }  
  42. };  

    上面的代码演示了如何使用 AsyncHttpResponseHandler 和 BinaryHttpResponseHandler ,相信 AsyncHttpClient  会给大家带来很大的便利。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值