
有hander机制的,来完成主要的异步 *** 作 原生开发中抛开AsyncTask,只有hander机制能显示子线程对于UI线程的 *** 作
1volley只适应于8也就是22以上的版本,因为其中使用了androidhttpclient
2volley工作原理:
下面这图是volley的工作原理:
其核心为requestqueue,在其中包含一个CacheDispatcher和若干个networkDispatcher。所有的下载任务都在一个优先级队列中维护,然后会发到cacheQueue,CacheDispatcher不断盯着cacheQueue,进行任务处理,其中的细节见3若没得到cache,讲任务假如到networkQueue,networkDispatcher不断盯着networkQueue,进行网络请求,其中的细节见4。不管在cacheDispatcher还是networkDispatcher,若得到response,发出给listener接听到。
3cacheDispatcher工作细节
此处用到了本地的文件缓存,此处设计借鉴了浏览器的缓存设计。会读取response的header请求,根据header的内容设置缓存的过期时间。缓存文件分为两部分,第一部分为存储缓存的头,第二部分就是缓存的实际内容。在读取缓存时,会根据头部过期时间的设置,判断是否需要再发出网络请求。
4networkDispatcher工作细节
此处是网络请求,这块有两个关键类,一个是BasicNetwork,一个是httpStack。 basicNetwork中包含了httpstack,在httpstack中进行网络请求,然后basicNetwork对得到的response进行了parse和加入文件缓存等工作处理,最后在此处发出response,由listener接收。
5处理
在上文中是volley一般的工作原理,根据的特点,volley中还有三个特殊的类 NetworkImageView,ImageLoader和ImageRequest对做了一些特殊处理。
ImageRequest在doparse中结合和控件特点,对bitmap生成进行大小缩放,以达到清晰
和占用更少内存的目的
ImageLoader是加载的helper,其中有个两个map,flightRequest和BatchResponse,flight的主要目的对每个request进行唯一性确认,使其不再重复生成,而且在控件显示不回出现错图的情况。batch response则是在收到厚发给listen时控制,这样也可以再此处取消请求,加快加载速度
NetworkImageView继承与Imageview,主要结合了ImageLoader可以异步展示网络,同时在detach时取消网络请求。
以上就是关于android volley request 有对相应数据进行hander 处理吗全部的内容,包括:android volley request 有对相应数据进行hander 处理吗、、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)