Android性能优化:Volley使用及其原理解析

前言

在现在的Android开发之中,已经比较少人使用volley进行网络请求了,之所以现在还写这篇关于Volley的文章,是因为volley是一个优秀的框架,其设计严格遵循了面向对象的设计原则,学习volley的设计原则,对自己的项目开发有比较好的提示作用。

使用方式

1. 导入
在AndroidStudio里面,只需要在Projrct structure里面添加依赖,在搜索框里输入“volley”,直接搜索v,然后点击添加即可。

![image](//upload-images.jianshu.io/upload_images/6003203-08fdbb9473a187fa.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1000/format/webp)

2. 使用
使用相对来说比较简单,首先需要创建一个RequestQueue,然后添加Request即可

        RequestQueue queue = Volley.newRequestQueue(this);
        queue.add(new StringRequest(Request.Method.POST, "URL", new Response.Listener<String>() {
            @Override
            public void onResponse(String response) {

            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {

            }
        }));

对于添加的Request,官方默认实现的有以下几种请求方式,当然可以自定制Request,后续会讲到。

image

原理解析

在详细解释每个步骤的原理之前,先看一下volley的整个UML图

image

如图,红框部分是整个Volley主要部分,可以看到,最中间的RequestQueue是把所有功能组合起来的类,而整个Volley设计是遵守了依赖倒转原则,即针对接口编程,而不是针对实现编程,由此对于功能的拓展将很容易实现。接下来讲述整个Volley的运作过程。

1. 创建
在详细解释之前,先看一下创建的整体流程,当熟悉整个流程之后,对源码的理解会容易很多。

[外链图片转存失败(img-iAkr8qXk-1563526416241)(//upload-images.jianshu.io/upload_images/6003203-63fb0652f041774b.png?imageMogr2/auto-orient/strip|imageView2/2/w/986/format/webp)]

对于Volley而言,创建是由Volley.newRequestQueue()开始的,返回一个RequestQueue实例,该静态方法有两个重载,如下

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

当使用第一个重载方法时,其实也是调用到第二个方法。

 public static RequestQueue newRequestQueue(Context context) {
        return newRequestQueue(context, null);
    }

第二个参数HttpStack,是用来进行网路请求的,由Volley的整体框架图,可以看出其有两个实现子类,选择哪个子类是有SDK的版本决定的,源码如下:

    public static RequestQueue newRequestQueue(Context context, HttpStack stack) {
//放置缓存的地方
        File cacheDir = new File(context.getCacheDir(), DEFAULT_CACHE_DIR);
        String userAgent = "volley/0";
        if (stack == null) {
               //如果版本号大于9(V2.3)
            if (Build.VERSION.SDK_INT >= 9) 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值