Volley(二)

Android Volley解析(二)之表单提交篇 上一篇文章中,讲了 Volley 的 get 和 post 请求,并且对 volley 的基本使用和基本分析做了讲解,而这篇 blog 将讲解用 volley 实现表单的提交,在看这篇文章之前,如果对 Volley 基本知识不够了解的朋友,可以移驾前往Android Volley解析(一)之GET、POST请求篇表单提交的数据格式要实现表单的提交,就要知道表单提交的数据格式是怎么样,这里我从某知名网 阅读详情

通过之前,我们已经了解了Volley的基本用法,VolleyRequest、JsonXXXXRequest、ImageRequest。

以上这些都是Volley给我们写好的用于字符串、json和图片的网络数据读取。而在面对自定义数据时,则需要我们自定义的 Request 的请求。因此,Volley给了我们一个抽象类 Request 类。让我们继承该类,重写内部方法来实现自定义的请求类,并添加至请求列队来进行网络请求。

在继承该类后需要添加自定义返回数据类型、重写两个方法。在此我们使用Object类作为返回对象,其中两个构造方法中添加了 mListener 对象,而第二个构造方法则前置写入为GET请求方式。重写的两个方法 parseNetworkResponse 和 deliveerResponse。

public class ObjectRequest extends Request<Object> {

    public Response.Listener<Object> mListener;

    public ObjectRequest(int method, String url, Response.Listener<Object> mListener, Response.ErrorListener listener) {
        super(method, url, listener);
        this.mListener = mListener;
    }

    // GET用请求构造函数
    public ObjectRequest(String url, Response.Listener<Object> mListener, Response.ErrorListener listener) {
        super(Method.GET, url, listener);
        this.mListener = mListener;
    }
    
    @Override
    protected Response<Object> parseNetworkResponse(NetworkResponse response) {
        return null;
    }

    @Override
    protected void deliverResponse(Object response) {
    }
}

parseNetworkResponse 是对服务器响应的数据进行解析,数据以字节的形式存放在NetWorkResponse对象的data数据中,我们通过对该数据进

行单独的打包封装成为自己想得到的 Object 对象,通过Response.onSuccess返回,

deliverResponse 是将服务器响应的数据进行回调。

    @Override
    protected Response<Object> parseNetworkResponse(NetworkResponse response) {
        try {
            String str = new String(response.data, HttpHeaderParser.parseCharset(response.headers));
            return Response.success((Object) str, HttpHeaderParser.parseCacheHeaders(response));
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
            return  Response.error(new ParseError(e));
        }
    }

    @Override
    protected void deliverResponse(Object response) {
        mListener.onResponse(response);
    }


取消请求:在添加请求前给请求一个Tag标志,就可以在请求列队中记录到这个请求,如果我们想要取消这个标志Tag标志的请求,只需要通过请

求列队的 cancelAll 方法去取消Tag请求。


请求缓存:通过url查询请求列队中的cache查看是否存有该请求的缓存,大大减少请求次数。

	Cache cache = requestQueue.getCache();
        Cache.Entry entry = cache.get(url);
        if (entry != null)
            try {
                String data = new String(entry.data, "UTF-8");
            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            }

无效缓存:这是官网中的解释:

7.2 Invalidate cache
Invalidate means we are invalidating the cached data instead of deleting it. Volley will still uses the cached object until the

newdata received from server. Once it receives the response from the server it will override the older cached response.

大致意思是,无效表示我们正在使缓存的数据无效,而不是删除它。 Volley仍将使用缓存的对象,直到从服务器接收到新数    据。一旦它从服务器收到响应,它将覆盖旧的缓存响应。这是我拿Instant Translate软件翻译的。

	cache.invalidate(url, true);


关闭缓存:setShouldCache(false);// 通过单独请求关闭

删除单独缓存:remove(url);// 通过队列删除

删除所有缓存:clear(url);// 通过队列删除


设置优先级:

在实际开发中,我们常常需要提高某些请求的优先级来使其优先执行。一共有四个等级,默认是第二个。

                Priority.LOW
                Priority.NORMAL
                Priority.HIGH
                Priority.IMMEDIATE
具体设置请求优先级可以重写请求对象重的 getPriority 方法,返回自己需要定义的优先级。
内容审核与文本安全技术综述:检测、过滤与对齐 检测质量高度依赖数据。毒性/仇恨/冒犯语言检测领域形成了一批经典数据集,但它们的标签体系差异很大:例如 OLID(OffensEval)强调“是否冒犯—冒犯类型—目标对象”三层结构;HateXplain 在“hate/offensive/normal”三分类之外,还提供目标群体与人类标注的 rationale span;RealToxicityPrompts 则不做离散标签,而是用毒性分数来研究“模型续写时的毒性退化”。ACL 汇编。 阅读详情

相关推荐

ArcGIS学习记录—SHP文件转换为KML KMZ数据,并显示面要素相应的标注

使用相应软件操作获取KMZ数据得以下发到外业调查人员,使得矢量数据能够更显而易见,可视化,让外业人员的工作减轻许多。(过程步骤是借鉴于网络上的相关人士给的建议,根据这些建议自己做出来的步骤,可能有些粗略,有问题的话可以再进行探讨)...

qq_41046162的博客 5万+

自定义Volley添加请求头、发送Post请求、Volley的同步和异步、getParams 不被调用

一、自定义Volley我这里定义了fastJson和Volley的Request 1、首先创建一个类,继承Request类并在<>中写上要返回的类型 2、实现需要重写的方法 主要是parseNetworkResponse方法和deliverResponse parseNetworkResponse():Volley在工作线程中调用该方法,它包含了一些请求的状态码、请求头等,它返回的数据类型必须是

hello_1s的博客 7951

手把手教你用OpenCalib完成激光雷达与相机联合标定:从数据准备到结果可视化

本文详细介绍了使用OpenCalib工具链中的lidar2camera模块完成激光雷达与相机联合标定的全流程,包括数据准备、标定命令执行、结果验证与可视化。通过实战指南,帮助读者掌握工业级标定技术,提升自动驾驶和机器人领域的传感器融合精度。

weixin_30872499的博客 400

Volley源码浅析二

上文说到如果Request不需要缓存或者缓存的内容已经过期,又或者缓存内容不过期,但是softTtl已经超出了当前时间这三种情况最后会把当前Request加入到网络请求队列,那么4个NetworkDispatcher线程中的其中某个线程就能够从阻塞队列中取出Request脱离阻塞// NetworkDispatcher.java private void processRequest() thr...

qq_22194581的博客 385

Klipper-源码模块

Klippy上位机程序采用多线程架构,包含四个主要进程:主线程处理G代码命令、串口IO线程(C语言实现)、MCU响应处理线程(Python实现)和独立日志线程。代码结构分为三大模块:chelper(C语言辅助函数)、extras(扩展功能如温度控制)和kinematics(运动学模型实现)。核心功能模块包括串口通信(serialhdl.py)、步进电机控制(stepper.py)、运动学计算等,其中C语言实现的底层模块通过serialqueue.c处理高效IO。扩展模块支持热床、传感器等外设,运动学子模块提

weixin_44258581的博客 992

Orange Pi 3B+刷入EmuELEC全过程:手把手教程

手把手教你如何在Orange Pi 3B+上成功刷入emuelec系统,涵盖烧录工具、镜像下载到启动设置的完整流程,让复古游戏体验轻松实现。

weixin_35732273的博客 1097

Volley源码解析二

NetworkDispatcher Volley源码解析一说到如果Request加入网络请求队列的情况有三种 Request不需要缓存 缓存内容已经过期 Ttl 不过期,但是softTtl 已经超出了当前的时间 那么4个NetworkDispatcher线程中的其中一个线程就会从阻塞队列取出Request脱离阻塞,代码如下 //NetworkDispatcher.java public voi...

k_every的博客 397

芯片设计流程中的def文件

在实际的DEF文件中,每个部分都包含了与实际设计相关的详细信息,这个模板只展示了每个部分的基本结构。在实际应用中,DEF文件通常由EDA(电子设计自动化)工具在完成布局(Placement)和布线(Routing)步骤后自动生成,在集成电路设计中,DEF(Design Exchange Format)文件的模板具体内容会依设计的复杂性和特定需求而变化。简而言之,LEF文件提供了单元的物理特性和规则,而DEF文件使用这些规则来确定单元。)文件描述了特定设计中所有物理元素的精确放置和连线信息。

qq_36045093的博客 4863

深入volley(二)volley缓存细节

上一章讲解了volley缓存文件的结构与内容,没有看过d

三岁的Android学习 2万+

基于MediaPipe的智能俯卧撑计数与姿势矫正系统

在现代健身和体能训练中,俯卧撑是最基础也是最有效的自重训练动作之一。然而,许多人在进行俯卧撑训练时常常存在姿势不正确、计数不准确等问题。本文将介绍如何利用计算机视觉和姿态估计技术,开发一个智能的俯卧撑计数与姿势矫正系统。

qq_36224726的博客 917

Python多版本共存指南:用CMD命令一键切换3.6和3.8解释器(含pip使用技巧)

本文详细介绍了在Windows CMD环境下实现Python多版本(如3.6和3.8)共存与一键切换的完整方案。通过文件重命名策略、环境变量优化和自定义脚本,开发者可快速切换Python解释器版本,并管理各版本独立的pip依赖库,确保项目环境隔离与兼容性。

weixin_29035405的博客 424

Volley源码分析二

在前两天我发布的文章:Volley源码分析一 中我较为详细的分析了Volley,今天继续,这篇文章会讲一些上一篇没有提到的比较细节的点,以及对于Volley源码中一些可以优化的实现的一些思考ByteArrayPool的分析byte[] 的回收池,用于 byte[] 的回收再利用,减少了内存的分配和回收。主要通过一个元素长度从小到大排序的ArrayList作为 byte[] 的缓存,另有一个按使用时间

ShanQuanQiang的专栏 2980

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Android Volley使用(二)使用Volley加载网络图片

使用Volley加载网络图片

Errol's Blog 2749

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Volley框架(二):使用Volley加载图片

在上一篇博客《Volley框架(一):使用Volley请求数据》中我们知道了使用Volley请求网络数据并封装成我们自定义的格式,今天我们就来看一下Volley的另外一个作用,使用Volley加载图片,同时使用Volley还能非常简单的实现内存和磁盘缓存,达到类似Universal-Image-Loader图片加载框架的功能。 使用Volley加载图片有三种方式: 1、使用ImageReq...

ITRenj的博客 780

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Android Volley完全解析(二),使用Volley加载网络图片

在上一篇文章中,我们了解了Volley到底是什么,以及它的基本用法。本篇文章中我们即将学习关于Volley更加高级的用法,如何你还没有看过我的上一篇文章的话,建议先去阅读Android Volley完全解析(一),初识Volley的基本用法。 在上篇文章中有提到过,Volley是将AsyncHttpClient和Universal-Image-Loader的优点集成于一身的一个框架。我们都知道,Universal-Image-Loader具备非常强大的加载网络图片的功能,而使用Volley,我们也可以实现基

郭霖的专栏 16万+

Volley框架解析(二)-----Volley及RequestQueue解析

Volley框架解析(二)—–Volley.java及RequestQueue.java解析题外话(可直接无视跳过    这是第一次比较完整的去阅读一个框架的源码,刚开始看的时候可以说是除了认识几个基本的public, interface, final等关键词之外,其他的一律不通orz,而且还不知道从哪里下手。后来磨蹭了好久还是慢慢的静下心来,对照着Java文档和Android文档查阅,刚开始都是陌

凹凸曼哒小乖兽 2944

Volley源码解析(二)

上一篇博客介绍了Volley的请求流程,本篇会分别介绍请求过程,缓存过程,回调过程 请求过程 从NetworkDispatcher的run方法开始分析 while (true) { Request<?> request; try { // Take a request from th...

Zhu的博客 164

Android中关于Volley的使用(二)从RequestQueue开始来深入认识Volley

在前面的几篇文章中,我们学习了如何用Volley去网络加载JSON数据,如何利用ImageRequest和NetworkImageView去网络加载数据,而关于Volley的使用,我们都是从下面一行代码开始的: [java] view plaincopy Volley.newRequestQueue(this);   这是Volley类

junjianzhang的专栏 412

Android Volley完全解析 二 ,使用Volley加载网络图片

Android Volley完全解析 二 ,使用Volley加载网络图片

hfdhjjj的博客 174

舌尖上的Android Volley(二)

经过上一篇文章的学习,我们已经品尝了Volley的Request的StringRequest、JsonRequest、ImageRequest、ImageLoader、NetworkImageView等几种美食。其中StringRequest用于请求普通的文本数据,JsonRequest(JsonObjectRequest、JsonArrayRequest)用于请求JSON格式的数据。

WX_LYB的博客 683

Android Volley完全解析(二):使用Volley加载网络图片

转载自郭霖的博客:http://blog.youkuaiyun.com/guolin_blog/article/details/17482165 在上一篇文章中,我们了解了Volley到底是什么,以及它的基本用法。本篇文章中我们即将学习关于Volley更加高级的用法,如何你还没有看过我的上一篇文章的话,建议先去阅读Android Volley完全解析(一),初识Volley的基本用法。

AudreyShen的博客 344

Volley框架学习(二)使用Volley实现异步加载图片

在上一篇中我们学习了Volley框架的环境搭建,以及如何使用Volley进行Json数据的请求,这一节我们来讲解一下如何使用Volley快速的实现网络图片的异步加载 。 编写一个方法,取名为loadImage(),并向其传递一个String类型的参数,该参数表示请求图片的url地址,主要代码如下: public void loadImage(String url){ R

siwen1234的博客 546

初识Volley(二)

Volley提供2个静态方法: public static RequestQueue newRequestQueue(Context context) {} public static RequestQueue newRequestQueue(Context context, HttpStack stack) {} 第一个直接调用第二个的newRequestQueue(context

cj6585256的专栏 3203
上一篇: Volley(一)
下一篇: Volley(三)
羊羊爱代码
博客等级 码龄11年 8粉丝 28原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值