Android Volley 实用总结

使用Volley进行Android网络请求编程 Volley是一个强大且易于使用的网络请求库,它可以帮助我们方便地处理网络请求,并提供了简洁的API。接下来,我们演示了如何发送GET请求和POST请求,并处理它们的响应和错误。Volley是一个功能强大且易于使用的库,它提供了许多方便的方法来处理网络请求。请求队列负责管理所有的网络请求,并按照它们的优先级进行处理。对象添加到请求队列中,Volley会自动处理请求的发送和响应的接收。是Volley的一个内置请求类型,用于发送字符串类型的请求。在上面的代码中,我们首先指定了请求的URL,然后创建了一个。 阅读详情

1. 简介

在使用Android开发的过程中,难免会用到网络请求,当下Android一个非常方便的开源控件Volley能够解决我们在开发Android应用中网络请求的工具;

2. Volley的优点

1.Volley的jar很小,100多K,非常适合集成使用;
2,非常适合进行数据量不大,但通信频繁的网络操作

3,可直接在主线程调用服务端并处理返回结果,

4,可以取消请求,容易扩展,面向接口编程

5,网络请求线程NetworkDispatcher默认开启了4个,可以优化,通过手机CPU数量

6,通过使用标准的HTTP缓存机制保持磁盘和内存响应的一致

3. Volley 的缺点

1,使用的是httpclient、HttpURLConnection
2,Android6.0不支持httpclient了,如果想支持得添加org.apache.http.legacy.jar
3,对大文件下载 Volley的表现非常糟糕
4,只支持http请求
5,图片加载性能一般

可以参考文章:手撕 Volley

4.Volley的使用步骤

volley的使用过程很简单,只需要三步,分别是:
1. 创建一个RequestQueue对象。
2. 创建一个StringRequest对象。
3. 将StringRequest对象添加到RequestQueue里面。

5,Volley实例请求网络数据

下面使用一个实例,来演示Volley的使用。该实例包含一个EditText输入URL地址,一个button发送请求命令,一个TextView展示返回的url网址信息内容;

Android studio使用Volley的build.gradle实例;
dependencies {
    compile 'com.mcxiaoke.volley:library:latest.integration'
  
}

xml布局文件如下:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.anana.sockettest.VolleyTestActivity">

    <TextView
        android:id="@+id/textView4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentStart="true"
        android:layout_alignParentTop="true"
        android:layout_marginStart="11dp"
        android:text="输入网址:"/>

    <EditText
        android:id="@+id/volleyurl"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/textView4"
        android:layout_marginTop="13dp"
        android:text="http://blog.youkuaiyun.com/guolin_blog/article/details/17482095/"
        android:layout_alignParentEnd="true"
        android:layout_alignStart="@+id/textView4"/>

    <Button
        android:id="@+id/requestvolley"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="请求"
        android:layout_below="@+id/volleyurl"
        android:layout_alignParentStart="true"
        android:layout_marginTop="12dp"/>

    <TextView
        android:id="@+id/showrequestreslut"
        android:layout_width="match_parent"
        android:layout_height="200dp"
        android:scrollbars="vertical"
        android:fadeScrollbars="false"
        android:scrollbarStyle="outsideOverlay"
        android:scrollbarFadeDuration="1000"
        android:layout_alignParentStart="true"
        android:layout_below="@+id/requestvolley"
        android:text="展示结果"
        android:layout_alignParentEnd="true"/>
</RelativeLayout>
activity界面具体使用Volley请求网络数据的实现;
package com.anana.sockettest;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.method.ScrollingMovementMethod;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

import com.android.volley.DefaultRetryPolicy;
import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.StringRequest;
import com.android.volley.toolbox.Volley;

public class VolleyTestActivity extends AppCompatActivity
{

    private final static String TAG = "volley";
    private Button request;
    private EditText volleyUrl;
    private TextView showcontent;
    private RequestQueue requestQueue;

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_volley_test);

        requestQueue = Volley.newRequestQueue(this);
        volleyUrl = (EditText) findViewById(R.id.volleyurl);
        request = (Button) findViewById(R.id.requestvolley);
        showcontent = (TextView) findViewById(R.id.showrequestreslut);
        showcontent.setMovementMethod(ScrollingMovementMethod.getInstance());
        request.setOnClickListener(new View.OnClickListener()
        {
            @Override
            public void onClick(View view)
            {
                request();
            }
        });
    }

    private void request()
    {
        StringRequest strRequest = new StringRequest(Request.Method.GET, volleyUrl.getText()
                .toString(), new Response.Listener<String>()
        {
            @Override
            public void onResponse(final String response)
            {
                Log.e(TAG, "onResponse response:" + response);
                runOnUiThread(new Runnable()
                {
                    @Override
                    public void run()
                    {
                        showcontent.setText(response);
                    }
                });
            }
        }, new Response.ErrorListener()
        {
            @Override
            public void onErrorResponse(final VolleyError error)
            {
                Log.e(TAG, "onResponse error:" + error);
                runOnUiThread(new Runnable()
                {
                    @Override
                    public void run()
                    {
                        showcontent.setText(error.toString());
                    }
                });
            }
        });
        strRequest.setRetryPolicy(new DefaultRetryPolicy(2500,2,1));
        requestQueue.add(strRequest);
    }
}



推荐文章:

Android Volley完全解析(一),初识Volley的基本用法

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

Android Volley完全解析(三),定制自己的Request

centos7下100T存储扩容(LVM)至150T 查看新增磁盘情况lsblk,fdisk -l [root@localhost ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sr0 11:0 1 4.2G 0 rom vda 252:0 0 80G 0 disk ├─vda1 252:1 0 1G 0 part /boot └─vda2 252:2 阅读详情

相关推荐

基于STM32的3D打印机控制

通过本项目,我们成功搭建了一个基础的3D打印机控制系统,能够控制步进电机和加热元件。这为使用STM32开发功能丰富的3D打印机提供了基础,您可以在此基础上继续扩展功能,如增加LCD显示、SD卡存储、联网控制等功能。在这个项目中,我们将使用STM32微控制器开发一个基础的3D打印机控制系统。通过控制步进电机、加热元件和温度传感器,我们将实现一个简单的FDM(熔融沉积制造)3D打印机控制。- 检查PWM信号的生成功能,确认加热元件的控制逻辑是否正常。- 增加适当的滤波和校准算法,以提高温度读取的准确性。

2401_88938661的博客 1502

android volley 超时,修改volley默认超时时间以及重连次数

See com.android.volley.Request.setRetryPolicy() and the constructor for DefaultRetryPolicy, e.g.代码如下:myRequest.setRetryPolicy(new DefaultRetryPolicy(MY_SOCKET_TIMEOUT_MS,DefaultRetryPolicy.DEFAULT_MAX...

weixin_39940688的博客 538

PowerBuilder 9.0安装组件全解析:Adaptive Server Anywhere、PowerDynamo、InfoMaker到底怎么选?

本文从技术架构师视角详细解析PowerBuilder 9.0安装组件选型策略,包括Adaptive Server Anywhere、PowerDynamo和InfoMaker的核心功能与应用场景。通过分析组件间的依赖关系和安装冲突机制,提供针对不同开发需求的最佳安装方案,帮助开发者高效配置PB9.0开发环境。

weixin_28700593的博客 441

Android开发,Http请求整合框架(新)基于Volley

Android开发,Android项目打jar包,以及Http请求整合框架的使用(后付文件和使用方法) 本文是基于前一篇文章 前一篇也是HTTP网络请求整合框架,只是是基于HttpClient的 但是在android 5.0后,android studio就不再支持了,到了android 6.0后就直接删除了 官方推荐了Volley这个框架 我这篇主要是使用上一篇的方法,将网络请求换成了

Stanny_Bing的博客 1723

FreeSurfer预处理命令

比如将/source/kernel.tgz解压到 /source/linux-2.6.29 目录 tar zxvf /source/kernel.tgz -C /source/ linux-2.6.29 tar zxvf /home/tj/application/freesurfer/subjects/mindboggle/OASIS-TRT-20-1.tar.gz -C /home/tj/application/freesurfer/subjects (1)lh.thickness mri_surf2su

Dream19961996的博客 1506

基于GEC6818开发板的C/C++贪吃蛇小游戏

f.开始游戏(进入游戏,并没有马上开游戏,需要点击播放才能开始)2.相关宏,全局变量(可以根据自己需要进行修改)k.显示文字前的相关初始化。k.自定义font.h文件。1.需要的主要头文件。l.在开发板上显示字1。m.在开发板上显示字2。a.显示固定大小图片。h.线程1:获得坐标。

2301_77273301的博客 2132

android开发,volley的二次封装和使用

先简单介绍一下。Android SDK中提供了HttpClient 和 HttpUrlConnection两种方式用来处理网络操作,但应用起来比较繁琐,需要我们编写大量的代码处理很多东西:缓存,Header等等; 而Volley框架就是为解决这些而生的,它与2013年Google I/O大会上被提出:使得Android应用网络操作更方便更快捷;抽象了底层Http Client等实现的细节,让

Gogym的博客 1269

Dify与钉钉轻量级集成:打造企业内部AI助手

企业级聊天机器人开发已成为提升内部协同效率的关键技术。其核心原理在于通过API集成,将AI模型能力与即时通讯平台无缝连接,实现智能问答与自动化流程。从技术价值看,这种集成方案能够显著降低AI应用落地门槛,将前沿的AI能力快速转化为实际生产力。在应用场景上,它尤其适用于HR答疑、IT技术支持、产品知识库等高频内部服务场景。本文聚焦于Dify与钉钉的轻量级集成方案,通过Stream模式实现高效消息处理,并利用AI卡片支持流式输出,为企业构建体验自然的智能机器人提供了完整实践路径。该方案特别强调配置简化与部署便捷

weixin_27155667的博客 696

Android Volley使用(一)Volley的基本用法

Volley使用介绍

Errol's Blog 3万+

Python爬取谷歌学术全攻略:基于Playwright与Asyncio的高效、抗反爬虫实践

同时,文章将详细解析爬虫过程中可能遇到的各种挑战,如IP封锁、验证码、动态内容加载等,并提供切实可行的解决方案。self.logger.info(f"第 {current_page} 页解析完成,共找到 {len(page_results)} 条结果。:谷歌学术的HTML结构并非一成不变,其CSS类名和标签结构可能会发生变化,且不同地区、不同语言的界面可能存在差异,增加了数据解析的难度。self.logger.info(f"开始搜索关键词: '{keyword}',计划爬取 {max_pages} 页")

2201_76125261的博客 1550

学 Simulink—— 基于储能系统(BESS)并网逆变器的 削峰填谷(Peak Shaving & Valley Filling)功能仿真

本文详细介绍了基于储能系统(BESS)并网逆变器的削峰填谷功能Simulink仿真方法。主要内容包括:1)削峰填谷原理与典型日负荷曲线控制逻辑;2)简化系统拓扑与关键参数设置;3)分步骤建模过程,重点讲解EMS控制逻辑、SOC模型和PQ控制实现;4)典型仿真结果分析及参数调优建议;5)常见问题解决方案和工程扩展方向。通过该仿真可掌握BESS在用户侧储能、虚拟电厂等场景的核心应用,实现电网侧功率按峰谷时段规划、BESS充放电控制及并网逆变器PQ控制。文章还提供了完整的BESS/微网系列课程框架和混合微网系统进

xiaoheshang_123的博客 41

Volley 简单入门

本文示例下载地址:https://github.com/cmyeyi/NetFramework.git 1、Volley简介 Volley是一个网络通信框架,在2013年的Google I/O被推出。 Volley是一个优秀的网路访问框架,即可以通过它访问普通的网络数据,如JSON格式的数据,也可以下载图片。 2、Volley的使用场景: Volley适合进行数据量不大但是通信频繁...

无问西东的博客 1万+

SAP BTP ABAP RAP 开发对象命名规范与落地实践

摘要:SAP BTP ABAP开发中的命名规范实践 在企业级ABAP开发中,命名规范是提升交付效率的工程化手段。SAP推荐采用[/<namespace>/][<prefix>]_<object_name>_[<suffix>]的结构化命名框架,解决多对象、多团队的协同问题。关键实践包括:使用组织专属命名空间避免冲突;通过prefix区分同类型对象的不同语义(如UI_/API_);object_name体现业务语义而非技术细节;suffix表达次级差异。在具体对

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1433

Android Volley 超实用简易封装

自定义volley封装 简单清晰明了

CrosX的三级包 8707

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

android volley 请求参数,Android简单实用Volley进行网络请求

1.添加依赖库:dependencies{compile'com.mcxiaoke.volley:library:1.0.19'}2.主讲StringRequest的用法get请求首先获取RequestQueue对象RequestQueuerequestQueue=Volley.newRequestQueue(this);创建一个StringRequest对象StringRequest...

weixin_33838871的博客 294

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Android Volley完全解析,初识Volley的基本用法

最近一直在学习网络加载图片方面的知识,感觉用Volley解析的方式挺方便的,当然肯定还有更便捷的方法,以下是这位大神博客关于Volley完全解析的网址,已经贴出来了,自己点连接去看http://blog.csdn.net/guolin_blog/article/details/17482095

kzg_IP的博客 541

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Android Volley解析

转载出处: http://blog.csdn.net/guolin_blog/article/details/17482165 Android Volley完全解析(一),初识Volley的基本用法 Android Volley完全解析(二),使用Volley加载网络图片 Android Volley完全解析(三),定制自己的Request Androi

xiaoke2213的博客 350

Android 网络请求框架(二) Volley工具类的封装

上一篇给大家讲解了Volley的使用,因为重复代码比较多,这篇给大家简单的吧Volley封装一下.方便以后使用创建VolleyRequestUtil工具类StringRequest封装JsonObjectRequest GET封装JsonObjectRequest POST封装ImageRequest封装ImageLoader封装完整代码: 创建VolleyRequestUtil工具类 实现单利模式,保证实例唯一化: public class VolleyRequestUtil { private

高级开发者进阶ing... QaQ 1031

理解Volley -- Android 学习之路

volley网络请求框架 ,使网络请求更加的快捷,方便,只需创建队列,创建请求,将请求放入队列就可以了,volley所有的网络请求都是异步的,不需要再操作线程的问题,而且自带缓存,再也不担心OOM了 我们只需要关心逻辑代码就可以了,需要注意的是 Volley适用于频繁发送请求 但是数据量不大(小于3M)的情况 。

佛系编码 2579

android网络开源框架volley(五)——volley的一些细节

最近又把volley拿出来整理了下。之前没有遇到过的一些小问题又来了,在此记录下: 1、HttpUrlConnection DELETE 方式无法添加body的问题:java.net.ProtocolException: DELETE does not support writing 2、关于(修改)volley的缓存

ttdevs 5331

Android Volley做网络请求的几种用法

前言:   最近在将自己写的烂代码重构,以前使用的网络请求全是基于apache的HttpClient,简单使用还好,使用多了发现重复代码太多,而且每次使用都很繁琐,因此在网上找了半天网络请求的相关类库,最后还是确定使用Volley,于是现在记个使用笔记: Volley几个主要功能: 1. 普通String请求: 既然使用了网络请求,那么网络权限是必不可少的,在AndroidManifest

Coding for Android 996

NoHttp,volley,okhttp这三个有什么区别,哪个好用

OkHttp和HttpURLConnection一样, 是面向java的, 而且是做socket层的事情的, 使用时要在子线程调用, 通过handler发送结果到主线程. 而NoHttp和Volley不是做socket层的东西. 直接在主线程就可以调用, 拿到结果后直接更新UI, 不需要用handler去发送, 很简单. 不过我推荐使用NoHttp. 原因是NoHttp封装了: 文件下载, 断点续

blues的博客 1534

android 带参数访问网络,安卓学习之Volley post带参数请求网络数据

volley请求用于小数据的请求速度是特别快的,比其他的请求框架简单而实用。对于初学者来说 是一款 简单易懂 封装好的 网络请求框架。在Appliction中 定义了请求队列public class MyApplication extends Application{public static RequestQueue queues;@Overridepublic void onCreate() ...

weixin_35433448的博客 262

Volley请求网络数据,设置图片(二)

这是一个工具类,可以直接使用

LI0_0BIN的博客 525

Volley https support

支持自己的证书 http://blog.applegrew.com/2015/04/using-pinned-self-signed-ssl-certificate-with-android-volley/ http://www.codeproject.com/Articles/826045/Android-security-Implementation-of-Self-signed-SS...

Code Review 239

Android working with Volley

Volley是google官方推出的一个开源网络访问库,在项目中直接使用它,而不需要写一大堆的重复的代码; 项目主页: https://android.googlesource.com/platform/frameworks/volley Volley中一个重要的类就是RequestQueue,不用多说,只看命名就知道它是一个请求队列,用于存放我们添加进去的网络请求; 我们可以通过Voll...

weixin_33682719的博客 71
上一篇: Android上JAVA Socket通信解析(一)初识socket通信
下一篇: Android上JAVA Socket通信解析(二)多线程通信
Anana_JP
博客等级 码龄17年 11粉丝 18原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值