美文网首页
Volley基础学习

Volley基础学习

作者: MacroZH | 来源:发表于2018-04-25 21:23 被阅读0次

Volley非常适合去进行数据量不大,但通信频繁的网络操作。
Volley提供了如下的便利功能:
1.JSON数据和图像等的异步下载;
2.网络请求排序(scheduling);
3.网络请求优先级处理;
4.缓存;
5.多级别取消请求;
6.与Activity生命周期联动(Activity结束时同时取消所有网络请求);

使用Volley进行网络请求分为三步
1.创建请求队列Volley.newRequestQueue(context);
2.构建请求对象 Request ,填入具体请求信息。
3.将请求对象加入请求队列中,开始执行网络请求。

1.使用StringRequest发送请求

    private void testFunc()
    {

        RequestQueue volleyQue= Volley.newRequestQueue(getContext());
        StringRequest stringRequest=new StringRequest(Request.Method.GET, "www.baidu.com", new Response.Listener<String>() {
            @Override
            public void onResponse(String s) {
                textView.setText(s);
            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError volleyError) {

            }
        });
        volleyQue.add(stringRequest);


    }

2.使用JsonRequest发送请求

JsonRequest是抽象类,实现了两个子类JsonObjectRequest和JsonArrayRequest,前者用于请求一段Json数据,后者用于请求Json数组。

 JsonObjectRequest jsonObjectRequest=new JsonObjectRequest("www.baidu.com", null, new Response.Listener<JSONObject>() {
            @Override
            public void onResponse(JSONObject jsonObject) {
                textView.setText(jsonObject.toString());
            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError volleyError) {

            }
        });

调用Request对象的cancel()方法可以取消请求,Request可以添加Tag,通过setTag(tag)设置Tag,请求队列通过RequestQueue.cancel(tag)取消请求。

3.使用ImageRequest请求图片

 ImageRequest imageRequest=new ImageRequest("http://seopic.699pic.com/photo/40007/4482.jpg_wh1200.jpg", new Response.Listener<Bitmap>() {
            @Override
            public void onResponse(Bitmap bitmap) {
                imageView.setImageBitmap(bitmap);
            }
        }, 0, 0, Bitmap.Config.ALPHA_8, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError volleyError) {

            }
        });

        volleyQue.add(imageRequest);

ImageRequest的构造函数有六个参数,第一个参数是图片URL;第二个参数是图片请求成功的回调;第三第四个参数分别用于指定允许图片最大的宽度和高度,如果指定的网络图片的宽度或高度大于这里的最大值,则会对图片进行压缩,指定成0的话就表示不管图片有多大,都不会进行压缩;第五个参数用于指定图片深度;第六个参数是图片请求失败的回调

4.使用ImageLoader请求图片

        ImageLoader imageLoader=new ImageLoader(volleyQue, new ImageLoader.ImageCache() {

            @Override
            public Bitmap getBitmap(String s) {
                return null;
            }

            @Override
            public void putBitmap(String s, Bitmap bitmap) {

            }
        });
        ImageLoader.ImageListener listener=ImageLoader.getImageListener(imageView,R.drawable.default,R.drawable.default);
        imageLoader.get("http://seopic.699pic.com/photo/40007/4482.jpg_wh1200.jpg",listener);

5.Volley执行过程

Volley的执行过程如图。


volley.jpg.png

RequestQueue会维护一个缓存调度线程(cache线程)和一个网络调度线程池(net线程),当一个Request被加到队列中的时候,cache线程会把这个请求进行筛选:如果这个请求的内容可以在缓存中找到,cache线程会亲自解析相应内容,并分发到主线程(UI)。如果缓存中没有,这个request就会被加入到另一个NetworkQueue,所有真正准备进行网络通信的request都在这里,第一个可用的net线程会从NetworkQueue中拿出一个request扔向服务器。当响应数据到的时候,这个net线程会解析原始响应数据,写入缓存,并把解析后的结果返回给主线程。

相关文章

  • Volley基础学习

    Volley非常适合去进行数据量不大,但通信频繁的网络操作。Volley提供了如下的便利功能:1.JSON数据和图...

  • Volley学习

    Volley学习 参考文章 Android Volley完全解析(一),初识Volley的基本用法Android ...

  • 每日一题:Volley源码问题分析

    每日一题:Volley源码问题分析 学习推荐_Volley源码解析 面试率: ★★★☆☆ 面试提醒 Volley是...

  • Volley学习

    1、基本使用 Volley适合轻量、高并发的网络请求,但如果大数据量的操作,比如上传下载文件,就不太适合了。使用V...

  • android Volley使用

    前言:一直想写volley,因为一开始做项目就开始接触使用volley,好吧,废话不多说,本篇包括基础使用,以及源...

  • Android框架学习笔记04Volley框架

    上一篇中我们学习了Retrofit框架,这一篇我们学习另外一个网络请求框架——Volley。Volley框架是Go...

  • Android:Volley的使用和Volley源码分析

    Volley网络框架 Volley的简单使用 Volley源码分析 }

  • Volley

    Volley地址Volley, Volley是Google开源的一个网络框架 Demo 通过Volley.newR...

  • 1、volley 官方教程-简介、配置

    文章摘要1、Volley 简介2、Volley库配置 英文文献 Github Volley下载地址 Volley是...

  • 框架学习:Volley

    Volley 原理 架构

网友评论

      本文标题:Volley基础学习

      本文链接:https://www.haomeiwen.com/subject/sntulftx.html