网友通过本文主要向大家介绍了volley的使用,android volley使用,volley框架使用,volley使用详解,volley如何使用等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
Volley的基本使用,Volley使用
本人初学,如有纰缪,望指正~ Volley是Google在2003年的I/O大会上推出的通信框架,结合了AsyncHttpClient和Universal-Image-Loader的优点——简化了http的使用 + 异步加载图片的神奇能力。Android中的Http实现主要有HttpUrlConnection和HttpClient两种,关于二者的选择Google在Blog中表示推荐在姜饼小人(API level = 9)及以上的版本中使用Java的HttpUrlConnection而在之前的版本使用Apache的HttpClient,这在Volley这个框架中也有明确的体现。 获取Volleygit clone https://android.googlesource.com/platform/frameworks/volley把它编译成jar文件就可以加入libs了 一、简单的请求(以StringRequest为例) Http的通信最主要的部分应该就是发出请求和接收响应了,所以Volley的比较核心的一个类就是RequestQueue,一个请求队列。它负责管理工作线程,读写缓存,和解析、分发响应(具体操作还是由具体的类实现),即将发出的Http请求都会首先聚集在这里等待工作线程来实现请求。RequestQueue可以被看成一艘载满Http请求的航空母舰,而工作线程就是弹射器喽。 所以按照航母起飞飞机的步骤,我们可以猜到利用Volley进行Http通信的简单步骤: 1.获取RequestQueue(得到一艘航母,可以是自己造的,也可以是委托别人造的,下面会提到) 2.实例化一个Request(得到一架飞机,你也知道飞机又很多类型啦) 3.将Request加入RequestQueue,等待工作线程将其发送出去(把飞机从机库升上起飞甲板,等待弹射器把它扔出去) 起飞侦察机-发出GET请求 按照上面的步骤,第一步就是建立一个请求队列,最简单的方法就是用Volley.newRequestQueue(),这是一个特别方便的静态方法,替我们默认实现了所有需要的东西(网络、缓存等,这些在Volley中都有默认实现),它会返回一个已经开始运行的RequestQueue(相当于别人帮忙造了艘航母)。之后我们需要的只是设置好请求的响应监听接口,把请求加入到这个队列中就可以等着响应数据来敲门了。下面是Google文档中的示例代码:

1 //初始化一个请求队列 2 RequestQueue queue = Volley.newRequestQueue(this); 3 String url ="http://www.google.com"; 4 5 //根据给定的URL新建一个请求 6 StringRequest stringRequest = new StringRequest(Request.Method.GET, url, 7 new Response.Listener() { 8 @Override 9 public void onResponse(String response) { 10 //在这里操作UI组件是安全的,因为响应返回时这个函数会被post到UI线程来执行 11 // 在这里尽情蹂躏响应的String。 12 } 13 }, new Response.ErrorListener() { 14 @Override 15 public void onErrorResponse(VolleyError error) { 16 // 出错了怎么办?凉拌!并且在这里拌。 17 } 18 }); 19 // 把这个请求加入请求队列 20 queue.add(stringRequest);

2.public JsonObjectRequest(int method, String url, JSONObject jsonRequest,Listener<JSONObject> listener, ErrorListener errorListener); public JsonObjectRequest(String url, JSONObject jsonRequest, Listener<JSONObject> listener,ErrorListener errorListener); 参数说明:如果是GET请求的话,jsonRequest传入null就可以了,否则在未指明请求方法的情况下(也就是第二个构造函数)会默认为POST请求。其他同上。 3.public JsonArrayRequest(String url, Listener<JSONArray> listener, ErrorListener errorListener); 参数说明:同上。 4.public ImageRequest(String url, Response.Listener<Bitmap> listener, int maxWidth, int maxHeight,Config decodeConfig, Response.ErrorListener errorListener); 参数说明:decodeConfig是图片的颜色属性,下面的几个值都可以使用。
ALPHA_8 | |
ARGB_4444 | 由于质量低,已经被弃用,推荐用ARGB_8888 |
ARGB_8888 | 每个像素用4byte存储 |
RGB_565 | 每个像素用2byte存储,红色占5位,绿色占6位,蓝色占5位 |

1 //初始化一个请求队列 2 RequestQueue queue = Volley.newRequestQueue(this); 3 String url ="http://www.google.com"; 4 5 //根据给定的URL新建一个请求 6 StringRequest stringRequest = new StringRequest(Request.Method.POST, url, 7 new Response.Listener() { 8 @Override 9 public void onResponse(String response) { 10 // 在这里处理请求得到的String类型的响应 11 } 12 }, new Response.ErrorListener() { 13 @Override 14 public void onErrorResponse(VolleyError error) { 15 // 在这里进行出错之后的处理 16 } 17 }) { 18 @Override 19 protected Map<String, String> getParams() throws AuthFailureError { 20 21 Map<String, String> map = new HashMap<String, String>(); 22 map.put("params1", "value1"); 23 map.put("params2", "value2"); 24 return map 25 }; 26 // 把这个请求加入请求队列 27 queue.add(stringRequest);


1 ImageLoader imageLoader = new ImageLoader(mRequestQueue, new ImageCache() { 2 @Override 3 public void putBitmap(String url, Bitmap bitmap) { 4 } 5 6 @Override 7 public Bitmap getBitmap(String url) { 8 return null; 9 } 10 }); 11 12 //default_image是正在加载图片时占位用的 13 //error_image是加载不成功时显示的图片 14 ImageListener listener = ImageLoader.getImageListene