网络框架Volley原理分析

简介:Volley 是 Google 推出的 Android 异步网络请求框架和图片加载框架。在 Google I/O 2013 大会上发布。

Volley 的特点:特别适合数据量小,通信频繁的网络操作。

首先从与框架同名的Volley.java开始分析,文件位于toolbox。该类主要用于建立一个新的请求队列RequestQueue,方法有两个分别是:

newRequestQueue(Context context, HttpStack stack)
newRequestQueue(Context context)

1.传入Context时,调用newRequestQueue(context, null),然后根据DEFAULT_CACHE_DIR定义缓存文件名。

2.然后根据系统版本号,sdk大于9时使用HurlStack( HttpUrlConnection ),否则使用HttpClientStack( HttpClient ),然后将Stack传入Network,Network可以调用Stack处理请求,然后将结果转换成NetworkResponse

3.然后将定义的Network和缓存目录传入RequestQueue(Cache cache, Network network)去新建请求队列。

4.最后开启请求队列,执行start()方法,该方法会产生根据线程池大小产生对应数量的网络调度线程NetworkDispatcher和一个缓存调度线程CacheDispatcher(此处是用于异步处理请求的)

5.每次调用只需要将自定义的Request通过add()方法传入,请求将会被添加到mCurrentRequests,该Set用于存储当前正在处理的请求,接着根据请求的shouldCache()方法判断是否需要进行缓存,如果不需要则直接放入网络队列,否则根据Url将请求放入缓存队列。

6.缓存调度器CacheDispatcher会从缓存队列中取出请求,然后根据CacheKey获取缓存,如果获取失败则放入网络队列中去处理,否则进行验证有效期等,最后将处理结果交由ResponseDelivery,他是返回结果分发接口,用于分发返回的结果

7.网络调度器NetworkDispatcher会从网络队列中取出请求,然后处理完成交由ResponseDelivery分发处理结果。

最后附上Volley的请求流程图
Volley请求流程图

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值