您的位置:首页 > 其它

Volley

2016-05-18 13:14 323 查看
简介

特点

使用
网络请求队列的建立与取消

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);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: