Volley
2016-05-18 13:14
323 查看
简介
特点
使用
网络请求队列的建立与取消
Get与Post请求方式
Get请求方式
Post请求方式
与Activity的生命周期相关联
网络图片加载
网络图片加载并缓存
网络图片加载与缓存
请求排序(建立了请求队列)
多级别取消请求
可以与Activity的生命周期进行关联
注意:不适合数据的上传与下载
方式一
方式二
特点
使用
网络请求队列的建立与取消
Get与Post请求方式
Get请求方式
Post请求方式
与Activity的生命周期相关联
网络图片加载
网络图片加载并缓存
简介
Volley意为齐射、并发的意思,是Google在2013年发布的Android平台上的网络通信库特点
网络通信更快,更简单(高效地Get、Post请求方式)网络图片加载与缓存
请求排序(建立了请求队列)
多级别取消请求
可以与Activity的生命周期进行关联
注意:不适合数据的上传与下载
使用
网络请求队列的建立与取消
MyApplication.javapackage 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);
相关文章推荐
- Spark性能相关参数配置详解-任务调度篇
- hibernate_detachedCateria_Disjunction(多条件or)
- MySQL导入.sql文件以及#1146 - Table 'hibernate.person_email' doesn't exist
- [剑指offer]删除链表中重复的结点
- 历年错题集2015
- cmd.ExecuteNonQuery()、cmd.ExecuteScalar()、cmd.ExecuteReader()
- 修改键值映射
- Material Design之CollapsingToolbarLayout 相关属性和方法介绍
- 腾讯微云下线同步盘功能
- 开源许可证GPL、BSD、MIT、Mozilla、Apache和LGPL的区别
- java实现抓取某公司官网新闻
- C/C++中的switch使用
- 枚举(enum)
- 创业的学费 99%不是在哈佛里交的
- Redis操作的封装类
- iOS热更新
- C++ 设置基类的析构函数为虚函数
- nginx location匹配
- 关于C语言的指针、链表的原理和各类操作
- ios交互js