Volley框架的介绍使用
来源:互联网 发布:开发一套淘宝采集软件 编辑:程序博客网 时间:2024/05/21 21:01
Volley是在2013年的Google I/O 2013大会上发布的,是我们的网络通信更快,更简单,更方便。对于初学者来讲是一个很好的框架。
简单来说,它提供了如下的便利功能:
JSON,图像等的异步下载;
网络请求的排序(scheduling)
网络请求的优先级处理
缓存
多级别取消请求
和Activity和生命周期的联动(Activity结束时同时取消所有网络请求)
一、获取JSON对象
1.1声明RequestQueue
声明一个新的RequestQueue对象
private RequestQueue mRequestQueue;
在onCreate初始化mRequestQueue
mRequestQueue = Volley.newRequestQueue(this);
声明并使用Request
复制代码
JsonObjectRequest jr = new JsonObjectRequest(Request.Method.GET,url,null,new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
Log.i(TAG,response.toString());
parseJSON(response);
va.notifyDataSetChanged();
pd.dismiss();
}
},new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.i(TAG,error.getMessage());
}
});
mRequestQueue.add(jr);
复制代码
Volley提供了JsonObjectRequest、JsonArrayRequest、StringRequest等Request形式。
JsonObjectRequest:返回JSON对象。
JsonArrayRequest:返回JsonArray。
StringRequest:返回String,这样可以自己处理数据,更加灵活。
二、加载网络图片
复制代码
private Button myBtn;
private ImageView myImageView;
private ImageLoader imageLoader;
private RequestQueue requestQueue;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_image_loader);
requestQueue= Volley.newRequestQueue(getApplicationContext());//请求队列
imageLoader=new ImageLoader(requestQueue, new BitmapCache());
myBtn= (Button) findViewById(R.id.myImageLoaderBtn);
myImageView=(ImageView)findViewById(R.id.myImageLoader);
myBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ImageLoader.ImageListener listener = ImageLoader.getImageListener(myImageView,R.drawable.ic_launcher, R.drawable.ic_launcher);
//后两个参数分别是加载的默认图和加载出错后要显示的图片
imageLoader.get("http://192.168.191.1:8080/JerehEdu/image/logo.jpg", listener,200,200);
}
});
}
复制代码
在加载图片的时候使用到了BitmapCache这样一个类,这个类是我们继承了Volley中的ImageCache实现的,它能够对我们加载的图片进行一个缓存。
复制代码
public class BitmapCache implements ImageCache {
private LruCache<String, Bitmap> mCache;
public BitmapCache() {
int maxSize = 10 * 1024 * 1024;
mCache = new LruCache<String, Bitmap>(maxSize) {
@Override
protected int sizeOf(String key, Bitmap value) {
// TODO Auto-generated method stub
return value.getRowBytes() * value.getHeight();
}
};
}
@Override
public Bitmap getBitmap(String arg0) {
// TODO Auto-generated method stub
return mCache.get(arg0);
}
@Override
public void putBitmap(String arg0, Bitmap arg1) {
// TODO Auto-generated method stub
mCache.put(arg0, arg1);
}
}
复制代码
现在应用到的网络通讯框架有很多像如Volley这样有很多,最近也在研究xutils,感觉这个也很不错,也希望和大家交流经验。
简单来说,它提供了如下的便利功能:
JSON,图像等的异步下载;
网络请求的排序(scheduling)
网络请求的优先级处理
缓存
多级别取消请求
和Activity和生命周期的联动(Activity结束时同时取消所有网络请求)
一、获取JSON对象
1.1声明RequestQueue
声明一个新的RequestQueue对象
private RequestQueue mRequestQueue;
在onCreate初始化mRequestQueue
mRequestQueue = Volley.newRequestQueue(this);
声明并使用Request
复制代码
JsonObjectRequest jr = new JsonObjectRequest(Request.Method.GET,url,null,new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
Log.i(TAG,response.toString());
parseJSON(response);
va.notifyDataSetChanged();
pd.dismiss();
}
},new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.i(TAG,error.getMessage());
}
});
mRequestQueue.add(jr);
复制代码
Volley提供了JsonObjectRequest、JsonArrayRequest、StringRequest等Request形式。
JsonObjectRequest:返回JSON对象。
JsonArrayRequest:返回JsonArray。
StringRequest:返回String,这样可以自己处理数据,更加灵活。
二、加载网络图片
复制代码
private Button myBtn;
private ImageView myImageView;
private ImageLoader imageLoader;
private RequestQueue requestQueue;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_image_loader);
requestQueue= Volley.newRequestQueue(getApplicationContext());//请求队列
imageLoader=new ImageLoader(requestQueue, new BitmapCache());
myBtn= (Button) findViewById(R.id.myImageLoaderBtn);
myImageView=(ImageView)findViewById(R.id.myImageLoader);
myBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ImageLoader.ImageListener listener = ImageLoader.getImageListener(myImageView,R.drawable.ic_launcher, R.drawable.ic_launcher);
//后两个参数分别是加载的默认图和加载出错后要显示的图片
imageLoader.get("http://192.168.191.1:8080/JerehEdu/image/logo.jpg", listener,200,200);
}
});
}
复制代码
在加载图片的时候使用到了BitmapCache这样一个类,这个类是我们继承了Volley中的ImageCache实现的,它能够对我们加载的图片进行一个缓存。
复制代码
public class BitmapCache implements ImageCache {
private LruCache<String, Bitmap> mCache;
public BitmapCache() {
int maxSize = 10 * 1024 * 1024;
mCache = new LruCache<String, Bitmap>(maxSize) {
@Override
protected int sizeOf(String key, Bitmap value) {
// TODO Auto-generated method stub
return value.getRowBytes() * value.getHeight();
}
};
}
@Override
public Bitmap getBitmap(String arg0) {
// TODO Auto-generated method stub
return mCache.get(arg0);
}
@Override
public void putBitmap(String arg0, Bitmap arg1) {
// TODO Auto-generated method stub
mCache.put(arg0, arg1);
}
}
复制代码
现在应用到的网络通讯框架有很多像如Volley这样有很多,最近也在研究xutils,感觉这个也很不错,也希望和大家交流经验。
0 0
- Volley框架的介绍使用
- Volley框架的介绍使用
- Volley框架的使用介绍
- Volley框架使用介绍
- Volley 框架的介绍和使用
- Volley框架的使用
- Volley框架的使用
- Volley框架的使用
- Volley框架的使用
- Volley框架的使用
- Volley框架的使用
- Volley框架的使用
- Volley框架的使用
- volley框架的使用
- Volley框架的使用
- Volley框架的使用
- Volley框架的使用
- Volley框架的使用
- 更新Oracle的Date字段
- hdu 3564 线段树+dp(最大递增子序列)
- spring定时器3
- 百度地图SDK3.4的使用
- LINUX用户目录
- Volley框架的介绍使用
- warning : No resources in 'C:\...\FusionBasic\FusionBasic.qrc'.
- Vim 配置详解
- 阿里云ECS上环境搭建(virtualenv+flask+gunicorn+supervisor+nginx)
- Centos6.6 安装jenkins及配置Nginx
- 在Mac上虚拟机windows中的Cocostudio编辑器中,无法显示图片
- 学习笔记
- oracle 删除临时表
- CentOS7下搭建postfix邮件服务器实现extmail的web访问