关闭

Android网络框架-Volley(一) 工作原理分析

标签: androidVolley
2642人阅读 评论(4) 收藏 举报
分类:

      使用Volley可以让我们轻松访问网络,不用每次都要写大量重复的代码,而且它是异步的,不用我们再去写异步任务,这样代码非常简洁。还有很重要的一点,他还可以异步加载图片并且有缓存机制,防止OOM发生,Volley把该干的全都干了,我们只需要专注于我们自己的业务逻辑就可以了。Volley适合于小数据量,多次数的网络访问情况,比如常见的一个listview,每行都是从网络上获取的一个图片和几行文本,使用Volley就再适合不过了,而且代码非常简单。

我们先来看一段代码

我们再来看看Volley的工作流程

其中蓝色的是主线程,绿色的是缓存线程,黄色的是网络线程

1.当一个Request请求添加到RequestQueue请求队列中,Volley就开始工作了。RequestQueue请求队列中持有一个CacheDispatcher缓存管家和一组NetworkDispatcher网络管家。

2.RequestQueue会先叫来CacheDispatcher缓存管家,让他去看看,当前请求的数据在没在cache中。

     2.1.当前的数据在cache中,那就把数据从cache中取出来,然后经过一番加工,将加工好的数据交付给主线程

     2.2.当前数据没在cache中,进行第3步

3.进行到了这一步,那肯定是数据没有在缓存中,那只能去网络中获取了,这时候RequestQueue会叫来NetworkDispatcher,NetworkDispatcher可是有一帮呢,其实这是一个线程池,默认情况下会启动4个线程去网络下载数据。所以RequestQueue把当前闲着的NetworkDispatcher叫来,给他们分配任务。

4.拿到任务的NetworkDispatcher就会去网络上下载数据了,与此同时,他会判断下载到的数据能否写入到cache缓存中,如果可以的话就写入cache,以便于下一次直接从cache中获取到数据。最后,将数据加工,交付给主线程。

一个宏观的Volley工作流程就分析完了,有了对Volley的一个初步认识,我们基本可以判断他能否应用到我们的项目中去了。下一篇文章我们将介绍Volley的核心RequestQueue源码以及RequestQueue的最佳实践






0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:256658次
    • 积分:3363
    • 等级:
    • 排名:第10395名
    • 原创:45篇
    • 转载:1篇
    • 译文:4篇
    • 评论:375条
    博客专栏
    QQ交流群
    45532593
    最新评论