Volley简介 我们平时在开发Android应用的时候不可避免地都需要用到网络技术,而多数情况下应用程序都会使用HTTP协议来发送和接收网络数据。...于是乎,一些Android网络通信框架也就应运而生,比如说AsyncHttpClient,它把HTTP所有的通信细节全部封装在了内部,我们只需要简单调用几行代码就可以完成通信操作了。...Android开发团队也是意识到了有必要将HTTP的通信操作再进行简单化,于是在2013年Google I/O大会上推出了一个新的网络通信框架——Volley。...很遗憾,StringRequest中并没有提供设置POST参数的方法,但是当发出POST请求的时候,Volley会尝试调用StringRequest的父类——Request中的getParams()方法来获取...连个设置POST参数的方法都没有。但是不要忘记,Volley是开源的,只要你愿意,你可以自由地在里面添加和修改任何的方法,轻松就能定制出一个属于你自己的Volley版本。 4.
开发团队为了将HTTP的通信操作进行简单化,在2013年Google I/O大会上推出了一个新的网络通信框架——Volley。...HTTP的请求类型通常有两种,GET和POST,先来学习GET: 首先需要获取到一个RequestQueue对象,可以调用如下方法获取到: RequestQueue mQueue = Volley.newRequestQueue...很遗憾,StringRequest中并没有提供设置POST参数的方法,但是当发出POST请求的时候,Volley会尝试调用StringRequest的父类——Request中的getParams()方法来获取...Response.ErrorListener() { public void onErrorResponse( com.android.volley.VolleyError...jsonObjectRequest); } 打印response会发现,返回给我们的数据确实JSON格式的,并且onResponse()方法中携带的参数也正是一个JSONObject对象,之后只需要从
这段时间一直在忙比赛,开发一个Android应用。转眼间博客竟然这么久没更新了,罪过罪过…这两天在用Volley框架,但是当我使用JsonObjectRequest发送Post请求时,竟然失效了。...; import com.android.volley.ParseError; import com.android.volley.Request; import com.android.volley.Response...; import com.android.volley.Response.ErrorListener; import com.android.volley.Response.Listener; import...com.android.volley.toolbox.HttpHeaderParser; public class CustomRequest extends Request...我的第二个方案代码是Volley官方资料上的使用方法,按理说不应该有问题。那么既然客户端这边没有问题,只能是服务器端的事了。猜想可能是由于服务器端不支持响应json格式的请求,才出现了请求失败的问题。
什么是Volley Google I/O 2013上,Volley发布了。Volley是Android平台上的网络通信库,能使网络通信更快,更简单,更健壮。...我在 云盘 放了编译好的 http://yunpan.cn/cg7S8awftBsmp 访问密码 b1bf 怎么用?...请求队列“RequestQueue 2.构建请求Request,支持 StringRequest,JsonRequest,并可以自定义Request 3.构建 回调监听器 ,它将在请求处理完成后被调用...responseListener, mErrorListener){ @Override protected Map getParams...Toast.makeText(getBaseContext(), volleyError.getMessage(), 0).show(); } }; } 注意传参时,是通过匿名类实现的,重载了getParams
Volley Volley 是 Google 推出的 Android 异步网络请求框架和图片加载框架。在 Google I/O 2013 大会上发布。...默认 Android2.3 及以上基于 HttpURLConnection,2.3 以下基于 HttpClient 实现,这两者的区别及优劣在4.2.1 Volley中具体介绍。 (4)....再加上 HttpURLConnection 本身 API 相对简单,所以对 Android 来说,在 2.3 之后建议使用 HttpURLConnection,之前建议使用 AndroidHttpClient...在 Android 2.1 之后,我们可以通过 String userAgent = System.getProperty("http.agent"); 得到系统默认的 User-Agent,Volley...protected Map getParams() 在上面getBody函数没有被重写情况下,此方法的返回值会被 key、value 分别编码后拼装起来转换为字节码作为
从优秀的代码中学习优秀的编程思想以及良好的代码设计和代码风格是一个非常好的方法,这次通读了 Volley 的源码之后,对于 Volley 的代码质量和拓展性深感佩服,为了更好的记录这次的源码研究之旅,写几篇博客记录一下...一、Volley 简介 ---- Volley 是 Google 在 2013 年的 I/O 大会上推出的 「Android 异步网络请求框架和图片加载框架」,它的设计目标就是去进行 数据量不大,但 通信频繁...需要注意的是在我标注的第一个地方,调用了 Stack 的 executeRequest() 方法,这里的 Stack 就是之前调用 Volley.newRequestQueue() 所创建的实例,前面也说过了这个对象的内部是使用了...在 NetworkDispatcher 接收到了这个 NetworkResponse 对象之后,又会调用 Request 的 parseNetworkResponse() 方法来对结果进行解析,然后将数据写入到缓存...---- 参考 Android Volley完全解析(四),带你从源码的角度理解Volley Volley框架源码解析
离线缓存是指在有网络的状态下将从服务器获取的网络数据,如Json 数据缓存到本地,在断网的状态下启动APP时读取本地缓存数据显示在界面上,常用的APP(网易新闻、知乎等等)都是支持离线缓存的,这样带来了更好的用户体验...如果能够在调用网络接口后自动缓存返回的Json数据,下次在断网状态下调用这个接口获取到缓存的Json数据的话,那该多好呢?Volley做到了这一点。...public void onErrorResponse(VolleyError volleyError) { } }) { @Override protected Map getParams...只缓存了接口路径,并没有缓存接口的传入参数,因此如果做分页查询的话,使用此方法是不妥的。 ...2.在测试过程中,依然发现有的时候获取不到缓存数据,有的时候却可以获取到。对获取缓存的代码延迟加载能够有效解决这个问题。
Volley 相比其他网络框架而言,采用了在 Android 2.3 以下使用 HttpClient ,而 Android 2.3 及以上使用 HttpUrlConnection 的方案。...这是因为在 Android 2.3 以下时,HttpUrlConnection 并不完善,有很多 bug 存在。...所以在 Android 2.3 及以上我们使用 HttpUrlConnection 来进行网络通信。 除此之外,Volley 框架还具有优先级处理、可扩展性强等特点。...在 Volley.newRequestQueue(Context context, HttpStack stack) 中创建完 RequestQueue 对象 queue 之后,还调用了 queue.start...HttpStack 现在回过头来看看 Volley 框架中是如何发起网络请求的。在本文的开头中说过,Volley 是会根据 Android 的版本来选择对应的 HttpStack。
Volley是Google官方出的一套小而巧的异步请求库,该框架封装的扩展性很强,支持OkHttp,Volley里面也封装了ImageLoader,自身作为图片加载框架,不过这块功能没有一些专门的图片加载框架强大...1.1简单请求一个网络地址并返回数据,创建队列 RequestQueue queue=Volley.newRequestQueue(context); 1.2在需要的地方创建StringRequest(...好了,数据是出来了,我没有截图,大家了解,这什么都不传是简单,但如果想传值呢,那就POST方法呗。 2:POST带参数请求 在创建StringRequest方法前,我们先看一下源码方法,4个参数。...怎么用来访问网络数据就完事了,到现在还没有说他的图片处理,不过这个框架真心好用,所以就写的多了点。...Override public void onErrorResponse(VolleyError volleyError) { 5:ImageLoader 图片缓存机制(推荐使用) 在普通版中自身是调用自己的缓存类
执行网络请求时 首先就会写这一行代码 RequestQueue queue = Volley.newRequestQueue(context); 点进去之后 代码如下(class volley) //...; import android.net.http.AndroidHttpClient; import android.os.Build.VERSION; import com.android.volley.Network...(), DEFAULT_CACHE_DIR); 这两行代码的意思是在项目data/data包下创建一个volley的文件夹 然后再看一下DiskBasedCache类的实现的一些细节 点开之后我们发现DiskBasedCache...); } } 这里是先开启了一个缓存的分发器 mCacheQueue, mNetworkQueue, mCache, mDelivery 有四个参数 第三个和第四个参数是在创建队列的时候调用...第一和第二个参数是在RequestQueue类里面已经初始化好了 这两个队列的意思是首先看缓存队列里面有没有请求 有的话就直接用 没有的话 就放在网络队列里 点到CacheDispatcher里面可以看到这是一个线程
:configChanges时,切屏会重新调用各个生命周期,切横屏时会执行一次,切竖屏时会执行两次 设置Activity的android:configChanges=”orientation”时,切屏还是会重新调用各个生命周期...六、资源对象没有关闭引起的内存泄漏。 在这些资源不使用的时候,记得调用相应的类似close()、destroy()、recycler()、release()等方法释放。...但是Retrofit门槛要比Volley稍高些,要理解他的原理,各种用法,想彻底搞明白还是需要花些功夫的,如果你对它一知半解,那还是建议在商业项目使用Volley吧。 18.熟悉哪些设计模式?...19.三级缓存(这个偶尔会问) 网络加载,不优先加载,速度慢,浪费流量 本地缓存,次优先加载,速度快 内存缓存,优先加载,速度最快 首次加载Android App时,肯定要通过网络交互来获取图片,之后我们可以将图片保存至本地...SD卡和内存中,之后运行APP时,优先访问内存中的图片缓存,若内存中没有,则加载本地SD卡中图片,最后选择访问网络 20.Android与服务器交互的方式中的对称加密和非对称加密是什么?
本篇文章中我们即将学习关于Volley更加高级的用法,如何你还没有看过我的上一篇文章的话,建议先去阅读Android Volley完全解析(一),初识Volley的基本用法。...我们都知道,Universal-Image-Loader具备非常强大的加载网络图片的功能,而使用Volley,我们也可以实现基本类似的效果,并且在性能上也豪不逊色于Universal-Image-Loader...android.volley.toolbox.NetworkImageView android:id="@+id/network_image_view"...) findViewById(R.id.network_image_view); 得到了NetworkImageView控件的实例之后,我们可以调用它的setDefaultImageResId()方法、...感兴趣的朋友请继续阅读Android Volley完全解析(三),定制自己的Request。
使用Volley传输网络数据(Transmitting Network Data Using Volley) Volley 是一个 HTTP 库,它使得在Android应用程序中操作网络更容易,是重要的...没有这个,你的app将不能访问网络。...再次强调,在终止后相应处理绝不会被调用。...ImageLoader同时也做了响应合并,没有它,几乎每个响应处理器都会将图片显示在一个视图View上和导致每个图片发生一次布局(layout)操作。...在一个工作现场中调用 parseNetworkResponse().
Volley是Android平台上的网络通信库,能使网络通信更快,更简单,更健壮。...,但是那些已经没有必须要的数据,还是会浪费系统的各种资源。..., android.R.drawable.ic_delete); mImageLoader.get(url, listener); ImageLoader的方法都需要从主线程里来调用。...新提供的com.android.volley.NetworkImageView。...使用Volley的话,我们可以在Activity停止的时候,同时取消所有或部分未完成的网络请求。
,原理示意图如下所示: ?...但是在NetworkImageView当中就可以这么任性,仅仅调用cancelRequest()方法把请求取消掉就可以了,这主要是得益于Volley的出色设计。...需要注意的是,Volley只是保证取消掉的请求不会进行回调而已,但并没有说可以中断任何请求。...由此可见即使是Volley也无法做到中断一个正在执行的线程,如果有一个线程正在执行,Volley只会保证在它执行完之后不会进行回调,但在调用者看来,就好像是这个请求就被取消掉了一样。...那么这里我们只分析与图片乱序相关部分的源码,如果你想了解关于Volley更多的源码,可以参考我之前的一篇文章 Android Volley完全解析(四),带你从源码的角度理解Volley 。
,建议大家先去看下:Android Volley 源码解析(二),探究缓存机制。...这是 Volley 源码解析系列的最后一篇文章,今天我们通过以基本用法和源码分析相结合的方式来进行,当然本文的源码还是建立在第一篇源码分析的基础上的,还没有看过这篇文章的朋友,建议先去阅读:Android...我们在 Android Volley 源码解析(一),网络请求的执行流程 这篇文章中讲到,网络请求最终会将从服务器返回的结果封装成 NetworkResponse 然后传给 Request 进行处理。...创建 RequestQueue 在之前已经讲过,可以参考这篇文章:Android Volley 源码解析(一),网络请求的执行流程,我们看下 ImageLoader 的构造方法: public...---- 相关文章 Android Volley 源码解析(一),网络请求的执行流程 Android Volley 源码解析(二),探究缓存机制
但,我热衷的封装思想是:一条调用链使用。...我喜欢借助 AndroidStudio 的代码提示功能,结合调用链的使用方式,将组件的使用划分成多个步骤,控制每个步骤的 api,让其他人使用的时候,最好可以达到不看文档,不看源码,只需要了解入口,之后都可以通过...Volley_get.png post 方法支持的 api 跟 get 一样,也就是设置下 tag(用于取消该请求),设置下请求参数,请求头,然后调用 enqueue(),内部会根据队列情况自动发起请求...所以,其实,封装的组件做的事并不多,就是将 Volley 的使用流程控制起来,提供调用链的使用方式。...'com.android.volley:volley:1.1.1' compile 'com.google.code.gson:gson:2.7' 支持以下功能: get 请求 post 请求 图片下载在本地指定目录
地址:https://github.com/mcxiaoke/android-volley Volley特点 Google I/O 2013上发布了Volley!...Volley是Android平台上的网络通信库,能使网络通信更快,更简单,更健壮!...默认 Android2.3 及以上基于 HttpURLConnection,2.3 以下基于 HttpClient 实现,这两者的区别及优劣在4.2.1 Volley中具体介绍。...Network:调用HttpStack处理请求,并将结果转换为可被ResponseDelivery处理的NetworkResponse。...NetworkDispatcher得到请求结果后判断是否需要存储在 Cache,CacheDispatcher会从 Cache 中取缓存结果。