android Volley 框架详解

Volley 是一个为 Android 应用设计的网络库,旨在简化网络操作,提供自动调度、并发连接、HTTP 缓存等功能。本文详细介绍了 Volley 的使用,包括 RequestQueue 和 Request 的创建,各种类型的请求如 JsonObjectRequest、JsonArrayRequest、StringRequest,以及如何执行异步请求、取消请求、设置请求优先级和头部。此外,还讨论了 Volley 的错误处理、图像请求和缓存机制。
摘要由CSDN通过智能技术生成

开发android应用很多时候都要涉及网络操作,Android SDK中提供了HttpClient 和 HttpUrlConnection两种方式用来处理网络操作,但当应用比较复杂的时候需要我们编写大量的代码处理很多东西:图像缓存,请求的调度等等;

而Volley框架就是为解决这些而生的,它与2013年Google I/O大会上被提出:使得Android应用网络操作更方便更快捷;抽象了底层Http Client等实现的细节,让开发者更专注与产生RESTful Request。另外,Volley在不同的线程上异步执行所有请求而避免了阻塞主线程。

这里写图片描述

Volley到底有哪些特点呢?

  1. 自动调度网络请求
  2. 多个并发的网络连接
  3. 通过使用标准的HTTP缓存机制保持磁盘和内存响应的一致
  4. 支持请求优先级
  5. 支持取消请求的强大API,可以取消单个请求或多个
  6. 易于定制
  7. 健壮性:便于正确的更新UI和获取数据
  8. 包含调试和追踪工具

 

如何使用Volley

git clone https://android.googlesource.com/platform/frameworks/volley 或者 https://github.com/mcxiaoke/android-volley 

或者到Maven下载http://central.maven.org/maven2/com/mcxiaoke/volley/library/1.0.19/library-1.0.19.jar

 

Volley中的RequestQueue 和 Request

  • RequestQueue 用来执行请求的请求队列
  • Request 用来构造一个请求对象
  • Request对象主要有以下几种类型: 
    1. StringRequest 响应的主体为字符串
    2. JsonArrayRequest 发送和接收JSON数组
    3. JsonObjectRequest 发送和接收JSON对象
    4. ImageRequest 发送和接收Image

Volley的基本使用

首先我们需要创建一个RequestQueue requestQueue,然后构建一个自己所需要的XXRequest req,之后通过requestQueue.add(req);将请求添加至请求队列;

 

构建一个RequestQueue
RequestQueue requestQueue=Volley.newRequestQueue(this);//这里的this指的是Context
创建一个Request(以JsonObjectRequest为例)
复制代码
private final String url="http:/xxxxx"//所需url
    JsonObjectRequest req=new JsonObjectRequest(url,null,new Response.Listener<JsonObject>(){
        @Override
        public void onResponse(JsonObject response){
            //添加自己的响应逻辑,
        }
    },
    new ResponseError.Listener(){
        @Override
        public void onResponseError(VollerError error){
            //错误处理
            L.d("Error Message:","Error is"+error);
        }
    });
复制代码
将req添加到requestQueue

在构建JsonObjectRequest对象时,需要四个参数,其中第二个参数代表http方法,第三个和第四个分别是响应监听和响应错误监听,分别需要覆写onResponse()onResponseError()方法;RequestQueue将会执行请求,并将响应回调onResponse()方法,所以需要在onResponse()方法中实现自己的业务逻辑

这里写图片描述

  此博文源码下载地址  https://github.com/Javen205/VolleyDemo.git

使用请求队列RequestQueue

Volley中的Request都需要添加到RequestQueue中才能执行,所以首先需要创建一个RequestQueue

RequestQueue = Volley.newRequestQueue(mContext);

通常情况在一个应用中需要统一管理一个请求队列,所以采用单例模式(注意:这不是必须的),创建一个类并在这个类中初始化RequestQueue等核心对象,以及实现一些我们所需的方法;

代码如下:

复制代码
package com.javen.volley;

import android.content.Context;
import android.text.TextUtils;

import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.toolbox.ImageLoader;
import com.android.volley.toolbox.Volley;

public class VolleyController {

    // 创建一个TAG,方便调试或Log
    private static final String TAG = "VolleyController";

    // 创建一个全局的请求队列
    private RequestQueue reqQueue;
    private ImageLoader imageLoader;

    // 创建一个static ApplicationController对象,便于全局访问
    private static VolleyController mInstance;
    
    private Context mContext;

    private VolleyController(Context context) {
        mContext=context;
    }

    /**
     * 以下为需要我们自己封装的添加请求取消请求等方法
     */

    // 用于返回一个VolleyController单例
    public static VolleyController getInstance(Context context) {
        
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值