Volley下载主要应用于下载文本数据和图片数据两个方向,下面分别介绍;

一、使用Volley开启下载,首先要做的是导包和添加权限;

(1)在build.gradle文件中导入依赖包:compile 'eu.the4thfloor.volley:com.android.volley:2015.05.28';

(2)在清单文件中添加访问网络权限,读、写外存权限;

二、文本内容上传下载步骤:

(1)创建RequestQueue对象,用于发送请求的请求队列;同时创建StringRequest对象,用于打包上传和下载的数据字符串;

(2)初始化数据步骤:

(2-1)初始化请求队列;Volley对象调用单例模式newRequestQueue(),传入上下文对象;

(2-2)初始化StringRequest类的请求对象;传入四个参数:

      参数1:请求方式:包括Request.Method.GET或Request.Method.POST,默认为下载Request.Method.GET;

      参数2:网络请求路径;

      参数3:实例化的请求监听对象;Response.Listener<T>,在该类中重写onResponse(String response),进行收到请求结果后的操作;

      参数4:实例化的错误监听对象;ErrorListener,在该类中重写onErorResponse(VolleyError error),进行出现网络错误的处理;

(2-3)如果是上传数据,在初始化StringRequest对象之后,重写该类中的getParams(),同时抛出AuthFailureError错误,该方法返回Map<String, String>类型的数据,以键值对的形式上传到网络;

(2-4)在操作事件中,RequestQueue对象调用add(),添加StringRequest对象作为不同的请求和上传数据包进行网络操作;

(2-5)onDestroy中加上try-catch语句来捕捉所有异常,以保证这个界面正常退出;RequestQueue对象调用cancelAll()传入”get”和”post”两种不同形式取消网络;

三、图片上传下载步骤:

(1)创建RequestQueue对象,用于发送请求的请求队列;同时创建ImageLoader对象和ImageRequest对象,用于打包下载和上传的图片;

(2)在下载图片时有三种方式:

  (2-1)图片请求方式(与文本请求类似):

    1)初始化ImageRequest类的图片请求对象,传入六个参数:

参数1:图片下载路径;

参数2:Response类的静态监听Listener<Bitmap>实例化对象,重写onResponse()传入Bitmap对象作为得到的图像;

参数3:图片宽度大小,正常为100;

参数4:图片高度大小,正常为100;

参数5:图片色度方式,Bitmap.Config.RGB_565;

参数6:Response类的静态监听ErrorListener实例化对象,重写onErrorResponse(),当请求图片错误时调用此方法;

2)将图片请求对象放入请求队列;RequestQueue对象调用add(),传入ImageRequest对象;

  (4-2)图片加载方式:

    1)创建ImageLoader类的图片加载对象,可以设置图片缓存;传入两个参数:

      参数1:请求队列RequestQueue对象;

      参数2:实现继承ImageLoader.ImageCache的自定义图片缓存类;

2)自定义图片缓存类继承ImageLoader.ImageCache中,定义一个属性两个方法:

  属性:图片缓存大小:首先确定图片缓存大小,获取系统运行内存,Runtime.getRuntime().maxMemory()/1024/1024/8 获取当前系统运行内存的1/8作为图片缓存;之后创建LruCache<String, Bitmap>对象,传入图片缓存大小确定即可;

重写getBitmap(String url),在获得图片时调用此方法,返回LruCach对象调用get()传入url的Bitmap对象;

重写putBitmap(String url, Bitmap bitmap),在加载图片时调用此方法,LruCache对象调用put()传入url下载路径和bitmap图片即可;

    3)创建ImageLoader.ImageListener单例,ImageListener调用静态方法getImageListener(),传入三个参数:

参数1:图片要显示的控件;

参数2:加载图片前的显示图像资源Id;

参数3:加载图片失败后显示图像资源Id;

    4)Loader对象调用get()开启下载,传入图片下载路径和ImageListener对象两个参数;

  (4-3)使用网络图片控件方式NetworkImageView:

    1)初始化NetworkImageView控件;

    2)创建ImageLoader类的图片加载对象,可以设置图片缓存;
    3)NetworkImageView对象调用setDefaultImageResId()设置加载前的图片资源Id;

    4)NetworkImageView对象调用setErrorImageViewResId()设置加载失败时的图片资源Id;

    5)NetworkImageView对象调用setImageUrl()传入两个参数,设置加载图片;

参数1:图片下载路径;

参数2:ImageLoader对象;

Android高级_第三方下载工具Volley的更多相关文章

  1. Android高级_第三方框架Xutils

    xutils的功能主要包括有四个部分:(1)布局视图关联:(2)图片下载与缓存:(3)网络请求:(4)数据库: 1. 使用xutils进行视图注入: (1)在控件声明上方添加@ViewInject() ...

  2. 用第三方下载工具下载官方XCode独立安装包的方法

    用第三方下载工具下载官方XCode独立安装包的方法 下载步骤 下载 aria2 工具配置好并启动 (利用其支持配置Cookie并多线程下载的功能.而迅雷则不支持设置Cookie,所以不支持这种需要登录 ...

  3. Android应用开发:网络工具——Volley(二)

    引言 在Android应用开发:网络工具--Volley(一)中结合Cloudant服务介绍了Volley的一般使用方法.当中包括了两种请求类型StringRequest和JsonObjectRequ ...

  4. Android应用开发:网络工具——Volley(一)

    引言 网络一直是我个人的盲点,前一阵子抽空学习了一下Volley网络工具的用法,也透过源代码进行了进一步的学习,有一些心得想分享出来.在Android开发中,成熟的网络工具不少,Android自带了H ...

  5. 在Mac OS X 通过抓包、“第三方下载工具”加速下载、安装APP或系统

    #!/bin/bash ######################################################################################## ...

  6. Android高级_视频播放控件

    一.Android系统自带VideoView控件 1. 创建步骤: (1)自带视频文件放入res/raw文件夹下: (2)声明初始化VideoView控件: (3)创建视频文件Uri路径,Uri调用p ...

  7. Android高效率编码-第三方SDK详解系列(二)——Bmob后端云开发,实现登录注册,更改资料,修改密码,邮箱验证,上传,下载,推送消息,缩略图加载等功能

    Android高效率编码-第三方SDK详解系列(二)--Bmob后端云开发,实现登录注册,更改资料,修改密码,邮箱验证,上传,下载,推送消息,缩略图加载等功能 我的本意是第二篇写Mob的shareSD ...

  8. 巧用第三方高速开发Android App 热门第三方SDK及框架

    巧用第三方高速开发Android App 热门第三方SDK及框架 历经大半年的时间,最终是把这门课程给录制出来了,也就在今天,正式在慕课网上上线了 项目地址:巧用第三方高速开发Android App ...

  9. 巧用第三方快速开发Android App 热门第三方SDK及框架

    巧用第三方快速开发Android App 热门第三方SDK及框架 历经大半年的时间,终于是把这门课程给录制出来了,也就在今天,正式在慕课网上上线了 项目地址:巧用第三方快速开发Android App ...

随机推荐

  1. Go基础知识

    编程基础 Go程序是通过package来组织的(与Python类似) 只有package名称为main的包可以包含main函数 一个可执行程序有且仅有一个main包 一般结构basic_structu ...

  2. python的Web框架,Django模板标签及模板的继承

    模板标签 在传递数据的时候,会有大量的数据展示在浏览器上,而数据会是动态变化的,在html的编写中,数据也是需要动态的,而不能是写死的,如果动态展示呢. 给定的例子数据 views传递数据给html ...

  3. C#操作MongoDB入门

    1.MongoDB安装及配置 (1)下载:   mongodb官网 https://www.mongodb.com/download-center      进入官网下载页,你会发现版本都是windo ...

  4. windows下使用python操作redis(Visual Studio Code)

    1.编辑工具: Visual Studio Code(windows环境) 2.redis服务器:这里用了远程连接,需要配置redis.conf. (1)注释 #bind 127.0.0.1 (2)设 ...

  5. .net Core 部署到 Linux

    1.环境说明 服务器系统:CentOS 7.4  64位 相关工具:Xshel.Xftp .net Core版本:2.2 VS版本:2017 服务器软件软件:.netcore.nginx.superv ...

  6. 使用spring security 2.0 和extjs 3.0实现web登录

    使用spring security 2.0 和extjs 3.0实现web登录 1开发环境说明 本例使用MyEclipse 6.5作为开发工具,jdk1.5作为编译工具,tomcat6.0作为web运 ...

  7. 基于Spring Security2与 Ext 的权限管理设计与兑现

    基于Spring Security2与 Ext 的权限管理设计与实现 一.Spring Security介绍 Spring Security的前身Acegi,其配置及使用相对来说复杂一些,因为要配置的 ...

  8. Java Servlet 过滤器与 springmvc 拦截器的区别?

    前言:在工作中,遇到需要记录日志的情况,不知道该选择过滤器还是拦截器,故总结了一下. servlet 过滤器 定义 java过滤器能够对目标资源的请求和响应进行截取.过滤器的工作方式分为四种 应用场景 ...

  9. 服务注册中心Eureka vs Zookeeper vs Consul

    前言 在现在云计算和大数据快速发展的今天,业务快速发展和变化.我们以前的单一应用难以应对这种快速的变化, 因此我们需要将以前单一的大应用不断进行差分,分成若干微小的应用或者服务,这就是微服务的思想.但 ...

  10. JavaScript:作用域与作用域链

    1.什么是作用域(scope)? 简单来讲,作用域(scope)就是变量访问规则的有效范围. 作用域外,无法引用作用域内的变量: 离开作用域后,作用域的变量的内存空间会被清除,比如执行完函数或者关闭浏 ...