Volley小记

   阅读Volley源码快有一周时间了,从最初的不知从何看起,到后来的大致了解,这是一个漫长的过程。下面就对观看心得做一个小结,以后会有更多的需要阅读源码,希望这次积累的经验对今后阅读源码、技术文档产生帮助。

   在查看框架的源码时,最重要的是先找准入口,就像一个迷宫,如果入口都找不到,根本就无法找到正确的道路,通过迷宫。而寻找入口的方法很简单,就是我们在使用这个框架时,第一行写的代码,这就是我们要找的入口。

例如使用Volley时,我们第一行代码是:

RequestQueue requestQueue=Volley.newRequestQueue(this);

StringRequest stringRequest=new StringRequest(......)

requestQueue.add(stringRequest);

   因此Volley框架的入口就是Volley.newRequestQueue(this);

   这会生成一个RequestQueue(请求队列)的实例,并把请求添加到队列中。同时会有两个调度员线程,分别是CacheDispatcherNetworkDispatcher,这两个线程在后台一直运行,轮训是否有待处理的请求,如果有就处理,否则就阻塞。

   其中有一个重要的接口就是HttpStack,这是用来处理用户请求Request的接口,它有两个实现类,分别是HurlStackHttpClientStack。由于Android Api 9(Android 2.3.2)之后不支持HttpClient,为了向下兼容,HurlStack是基于HttpUrlConnection建立连接,而HttpClientStack是基于HttpClient建立连接。而NetWork通过HttpStack处理请求,并返回处理结果。

   一.当请求需要缓存时,把请求交给缓存调度员CacheDispatcherCacheDispatcher根据请求url获取缓存结果。(1).缓存信息为空,说明找不到缓存信息

(没有缓存信息的两种原因:

1.第一次处理这个请求

2.不是第一次处理这个请求,但是缓存已过期

(缓存过期也分为:完全过期和软过期。完全过期是指真正的过期,软过期是指再过一会就要过期了)

),因为缓存过期了,所以需要通过网络处理请求url。并将请求的结果添加到缓存,方便下次使用,并将处理结果返回给调用者。(2).否则,从缓存获取结果并返回给调用者。

二.不需要缓存,把请求交给网络调度员NetworkDispatcher,并将结果返回给调用者

Volley的大致处理流程就是这样的。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值