Volley
来源:互联网 发布:招聘网络主播 编辑:程序博客网 时间:2024/06/06 02:27
- 简介
- 特点
- 使用
- 网络请求队列的建立与取消
- Get与Post请求方式
- Get请求方式
- Post请求方式
- 与Activity的生命周期相关联
- 网络图片加载
- 网络图片加载并缓存
简介
Volley意为齐射、并发的意思,是Google在2013年发布的Android平台上的网络通信库
特点
- 网络通信更快,更简单(高效地Get、Post请求方式)
- 网络图片加载与缓存
- 请求排序(建立了请求队列)
- 多级别取消请求
- 可以与Activity的生命周期进行关联
注意:不适合数据的上传与下载
使用
网络请求队列的建立与取消
MyApplication.java
package com.example.demo;import android.app.Application;import com.android.volley.RequestQueue;import com.android.volley.toolbox.Volley;/** * 创建全局的请求队列 */public class MyApplication extends Application { public static RequestQueue mRequestQueue; @Override public void onCreate() { super.onCreate(); mRequestQueue = Volley.newRequestQueue(getApplicationContext()); } public static RequestQueue getRequestQueue(){ return mRequestQueue; }}
Get与Post请求方式
有三个请求对象StringRequest、JsonObjectRequest、JsonArrayRequest,其中StringRequest包含了另外两个对象
Get请求方式
/** * 使用StringRequest发送Get请求 */String url = "http://xxx/get?name=zhangsan&sex=male";StringRequest request = new StringRequest(Request.Method.GET, url, new Response.Listener<String>() { @Override public void onResponse(String s) { } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError volleyError) { } });request.setTag("Get");MyApplication.getRequestQueue().add(request);
/** * 使用JsonObjectRequest发送Get请求 */String url = "http://xxx/get?name=zhangsan&sex=male";JsonObjectRequest request = new JsonObjectRequest(Request.Method.GET, url, null, new Response.Listener<JSONObject>() { @Override public void onResponse(JSONObject jsonObject) { } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError volleyError) { } });request.setTag("Get");MyApplication.getRequestQueue().add(request);
Post请求方式
/** * 使用StringRequest发送Post请求 */String url = "http://xxx";StringRequest request = new StringRequest(Request.Method.POST,url, new Response.Listener<String>(){ @Override public void onResponse(String s) { } },new Response.ErrorListener(){ @Override public void onErrorResponse(VolleyError volleyError) { } }){ /** * * 用户在使用Post请求方式中参数的传递 */ @Override protected Map<String, String> getParams() throws AuthFailureError { Map<String,String> hashMap = new HashMap<>(); hashMap.put("name","zhangsan"); hashMap.put("sex","male"); return hashMap; }};request.setTag("Post");MyApplication.getRequestQueue().add(request);
/** * 使用JsonObjectRequest发送Post请求 */String url = "http://xxxx";HashMap<String,String> hashMap = new HashMap<>();hashMap.put("name","zhangsan");hashMap.put("sex","male");JSONObject object = new JSONObject(hashMap);JsonObjectRequest request = new JsonObjectRequest(Request.Method.POST, url, object, new Response.Listener<JSONObject>() { @Override public void onResponse(JSONObject jsonObject) { } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError volleyError) { } });request.setTag("Post");MyApplication.getRequestQueue().add(request);
与Activity的生命周期相关联
/** * 将Volley与Activity的生命周期进行关联 */ @Override protected void onStop() { super.onStop(); /** * 通过给定的TAG值,将指定的队列全部关闭 */ MyApplication.getRequestQueue().cancelAll("Post"); }
网络图片加载
String url = "https://www.baidu.com/img/bdlogo.png";ImageRequest request = new ImageRequest(url, new Response.Listener<Bitmap>() { @Override public void onResponse(Bitmap bitmap) { } }, 0, 0, Bitmap.Config.RGB_565, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError volleyError) { } });request.setTag("Get");MyApplication.getRequestQueue().add(request);
网络图片加载并缓存
package com.example.demo;import android.graphics.Bitmap;import android.util.LruCache;import com.android.volley.toolbox.ImageLoader;public class BitmapCache implements ImageLoader.ImageCache { LruCache<String,Bitmap> cache; int max = 10*1024*1024; public BitmapCache(){ cache = new LruCache<String,Bitmap>(max){ @Override protected int sizeOf(String key, Bitmap value) { return value.getRowBytes()*value.getHeight(); } }; } @Override public Bitmap getBitmap(String s) { return cache.get(s); } @Override public void putBitmap(String s, Bitmap bitmap) { cache.put(s,bitmap); }}
方式一
String url = "https://www.baidu.com/img/bdlogo.png";ImageLoader imageLoader = new ImageLoader(MyApplication.getRequestQueue(),new BitmapCache());ImageListener listener = ImageLoader.getImageListener(iv,R.drawable.default,R.drawable.error)imageLoader.get(url,listener);
方式二
String url = "https://www.baidu.com/img/bdlogo.png";ImageLoader imageLoader = new ImageLoader(MyApplication.getRequestQueue(),new BitmapCache());NetworkImageView networkImageView=(NetworkImageView)findViewById(R.id.img); networkImageView.setDefaultImageResId(R.drawable.default); networkImageView.setErrorImageResId(R.drawable.error); networkImageView.setImageUrl(url,imageLoader);
0 0
- Volley
- Volley
- volley
- volley
- Volley
- Volley
- volley
- Volley
- Volley
- volley
- Volley
- volley
- Volley
- Volley
- Volley
- volley
- Volley
- volley
- 建立可持续集成系统(Jenkins)
- idea 项目运行出错 无法连接数据库 mysql spring jar等包找不到
- cmd.ExecuteNonQuery()、cmd.ExecuteScalar()、cmd.ExecuteReader()
- 历年错题集2015
- Spark性能相关参数配置详解-任务调度篇
- Volley
- hjr教程-DSP(二):CMD文件
- ListView的性能优化之convertView和viewHolder
- RDIFramework.NET平台代码生成器V3.0版本全新发布-更新于20160518(提供下载)
- const修饰的常量也是可以被修改的!真的是世界上唯一不变的是变化
- common-beanutils包下反射获取bean属性值
- POJ3190-Stall Reservations
- 无心向学——下午题
- 院士论坛︱李德仁院士:展望大数据时代的地球空间信息学(论文版)