AsyncHttpClient执行流程简单总结

一.AsyncHttpClient执行原理?
关键词:AsyncHttpClient  Request AsyncHttpReponseHandler

1.首先创建AsyncHttpClient、AsyncHttpResponseHandler和RequestParams,其中RequestParams封装请求参数;

2.通过post、get系列方法发起网络请求,AsyncHttpClient会将RequestParams、url、AsyncHttpResponseHandler等封装成Request,实际上是Runnable, 异步请求会放在线程池中执行,同步请求直接执行

3.在网络请求结果返回后,Request会通过AsyncHttpResponseHandler进行回调处理,AsyncHttpReponseHandler通过内部封装的ResponseHandler(继承于Handler,与创建AsyncHttpResponseHandler的线程的Looper绑定)来让回调在发起网络请求的线程中执行。

(图来自网络)

二.AsyncHttpClient如何执行同步请求和异步请求?
1.异步请求使用AsyncHttpClient,是将Request在线程池中执行,
AsyncHttpRequest request = new AsyncHttpRequest(client, httpContext,
      uriRequest, contentType, responseHandler, context);
threadPool.submit(request);
同步请求使用SyncHttpClient,是直接在发起网络请求(post、get等)的线程中直接执行。
new AsyncHttpRequest(client, httpContext, uriRequest, contentType, responseHandler, context).run();
SyncHttpClient继承于AsyncHttpClient,通过复写sendRequest()函数来实现,而非使用一个bool变量直接控制,这种实现方法调用起来更加清爽。

2.异步请求能被中止吗?同步请求呢?
同步请求和异步请求都可以被中止,通过RequestHandle来终止。但如果通过AsyncHttpClient的cancel,只能中止异步的传Context的请求。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值