android中volley框架源码解析

上次只是分享了volley框架的简单使用,现在是对volley源码的分析,下面是个人对volley框架的理解,让我一点点介绍。

下面这张图是volley总体的框架图,总共分成了五块,最主要的是处理请求的中央枢纽(requestQueue),当然其中还包括其他的一些,例如起新线程处理等,具体可以看下面的图。网络接口是主要用来发起网络请求的,network是一个接口,BasicNetwork是一个实现该接口的类,在处理请求的中央枢纽主要是通过该类来访问网络。存储Cache是将请求的结果存储在硬盘,是否存储是需要根据用户来定的,其中有字段来记录。请求Request是所有请求的父类,volley中总共提供了以下三种请求类型,当然用户也可以自定义request,只要继承Request父类即可,然后将request加入到requestQueue中即可,之后的事就不用担心了,这里JsonRequest还有两个子类,分别是JsonArrayRequest和JsonObjectRequest。volley的特色是加载图片,具体用法可以自行百度,这一块中主要的类是ImageLoader、ImageCache(这是一个接口),NetworkImageView是volley提供的自定义view,只要在xml文件中使用该view代替ImageView即可,因为该NetworkImageView也是继承ImageView。

这里是访问网络的具体的类,上面已经说明每个类的意义以及属性和操作。


下面主要是处理请求的中央枢纽,有具体说明。


该图是关于存储Cache的

该类是针对volley的特色来讲,最重要的是Imageloader,这个类相当于处理所有图片加载的中央枢纽,但是这个中央枢纽还是需要RequestQueue来辅助,因为总要访问网络的嘛。


如果有问题可以留言,有错误请提出哦!


在上面讲RequestQueue的图中,类中属性mDispatcher是默认大小为4的一个数组,数组中的每个元素都是一个NetworkDispatcher,关联的networkQueue都是同一个,都是从该networkQueue中读取request然后执行,那么为什么不能像cacheDispatcher只声明一个变量就好了。这里源代码的作者是想多个线程同时进行,加速网络访问的速度,比如在一开始我们立马加入4个Request到RequestQueue中,假设每个request访问的平均时间为100ms,如果只有一个networkDispatcher的话,那么就是需要4*100ms=400ms。如果有4个networkDispatcher的话,四个并行执行,只用100ms就可以结束访问并得到数据。

下面是源代码:

    private NetworkDispatcher[] mDispatchers;

    public RequestQueue(Cache cache, Network network, int threadPoolSize,ResponseDelivery delivery) {
        mCache = cache;
        mNetwork = network;
        mDispatchers = new NetworkDispatcher[threadPoolSize];
        mDelivery = delivery;
    }

    public RequestQueue(Cache cache, Network network, int threadPoolSize) {
        this(cache, network, threadPoolSize,
                new ExecutorDelivery(new Handler(Looper.getMainLooper())));
    }

    public RequestQueue(Cache cache, Network network) {
        this(cache, network, DEFAULT_NETWORK_THREAD_POOL_SIZE);
    }
所以如果没有具体指定大小的话,就是4个,这应该是源代码作者在考虑了访问性能和资源消耗之后才选择的值。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值