联网框架--->volley初步了解
来源:互联网 发布:淘宝没有3c会怎么样 编辑:程序博客网 时间:2024/05/22 03:12
原文来自 首先声明一下我是一名菜鸟,为了提高自己学习写博客,这是我的第一篇博客.
说到联网请求数据,大家一定会想到 HttpURLConnection和HttpClient,但是他们用起来比较复杂,需要进行很多,封装, 同时还要尽心缓存的处理,对于我来说比较麻烦, 当然,也有很多框架,使用起来非常的简单AsyncHttpClient,Xutils,afinal等等,比较的方便,今天跟大家介绍一下volley这个框架的用法.(Volley是Ficus Kirpatrick在Gooogle I/O 2013发布的一个处理和缓存网络请求的库,能使网络通信更快,更简单,更健壮,支持多线程 异步网络连接框架。)
注: volley 高并发的数据访问, 访问数据量不大,但是频繁,对于下载文件并不是他的长项,如果大家想要下载文件,推荐使用*android-downloader这个框架*
volley框架链接
废话不多说先讲讲用法
主要就是进行了以下三步操作:
1. .创建一个请求队列RequestQueue对象
2.创建一个请求对象StringRequest,JsonObjectRequest..
3.将请求对象添加到队列中
发生了一个小意外,eclipse卡死,关掉后打不开org.eclipse.swt.SWTException: Failed to execute runnable
解决办法:
删除文件 workspace/.metadata/.plugins/org.eclipse.e4.workbench/workbench.xmi
看代码:(url地址复制别人)
mRequestQueue = Volley.newRequestQueue(getApplicationContext()); String url= "https://www.baidu.com/index.php?tn=monline_5_dg"; JsonObjectRequest mJsonObjectRequest = new JsonObjectRequest(Method.GET, url, null, new Response.Listener<JSONObject>() { @Override public void onResponse(JSONObject response) { //请求成功的数据 Log.i(TAG, response.toString()); } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { //请求失败 Log.i(TAG, error.getMessage()); } }){ @Override protected Map<String, String> getParams() throws AuthFailureError { //添加参数//是这地方导包要注意 return super.getParams(); } }; mRequestQueue.add(mJsonObjectRequest);
就这样一个post请求就发送出去了可以一看到请求回来的数据:
图片的加载
android开发中,是不是常常会碰到大量图片的加载,还要处理图片的缓存十分的麻烦,volley框架就可以很好的解决这个问题:
1. ImageRequest的用法
使用可上面的差不多我就写代码了:
mImageRequest = new ImageRequest("http://tupian.enterdesk.com/2012/0621/gha/10/www.enterdesk.comq3.jpg.680.510.jpg", new Response.Listener<Bitmap>() { @Override public void onResponse(Bitmap response) { iv_volley.setImageBitmap(response); } }, 0, 0, Config.RGB_565, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { //请求失败 Log.i(TAG, error.getMessage()); } }); mRequestQueue.add(mImageRequest);
结果:
就是有这么简单 ,但是我们不能就这么满足,volley还为我们提供了一种加载图片的方法
2. ImageLoader的用法(个人非常喜欢这种)
先获取一个imageloader对象
ImageLoader mImageLoader = new ImageLoader(mRequestQueue, new ImageCache() { @Override public void putBitmap(String url, Bitmap bitmap) { // TODO Auto-generated method stub } @Override public Bitmap getBitmap(String url) { // TODO Auto-generated method stub return null; } });
关于这个imagecahe,后面再介绍
第二步:需要一个imageListener对象
view, defaultImageResId, errorImageResId
ImageListener imageListener = mImageLoader.getImageListener(iv_volley, R.drawable.ic_launcher, R.drawable.ic_launcher);
三个参数: view 显示加载图片的空间 defaultImageResId 没有加载成功时的图片,errorImageResId加载错误时的图片
第三步:
mImageLoader.get("http://tupian.enterdesk.com/2012/0621/gha/10/www.enterdesk.comq3.jpg.680.510.jpg", imageListener); mImageLoader.get("http://tupian.enterdesk.com/2012/0621/gha/10/www.enterdesk.comq3.jpg.680.510.jpg", imageListener, 0, 0);
介绍两种形式:第二种可以限制图片的大小,
maxWidth The maximum width of the returned image.
maxHeight The maximum height of the returned image.
关于imagecahe
private class MyImageCache implements ImageCache{ private LruCache<String, Bitmap> mCache; public MyImageCache(){ int maxSize = 8 * 1024 * 1024; mCache = new LruCache<String, Bitmap>(maxSize) { @Override protected int sizeOf(String key, Bitmap bitmap) { return bitmap.getRowBytes() * bitmap.getHeight(); } }; } @Override public Bitmap getBitmap(String url) { return mCache.get(url); } @Override public void putBitmap(String url, Bitmap bitmap) { mCache.put(url, bitmap); } }
maxSize 设置图片缓存的大小
LruCache:这个类非常适合用来缓存图片,它的主要算法原理是把最近使用的对象用强引用存储在 LinkedHashMap 中,并且把最近最少使用的对象在缓存值达到预设定值之前从内存中移除。(v4包)
ImageLoader imageLoader = new ImageLoader(mQueue, new BitmapCache());
其实我了解的也并不多,大家还可以继承Request对象,定义适合自己的 request对象
就到这里吧,欢迎大家批评,指正,交流 qq: 646095837
- 联网框架--->volley初步了解
- Volley联网开源框架
- 初步了解-集合框架
- 谷歌联网框架volley的使用
- Okhttp,Volley,xUtils,HttpURLConnection联网框架
- 【springmvc学习】框架初步了解
- Volley框架的初步理解(一)
- Android中常用的框架 Volley 联网框架 (一)
- Android中常用的框架 Volley 联网框架 (二)
- GoogleIO 2013 Android快速联网框架Volley介绍
- spring框架初步了解(第二篇)
- AI行为树框架初步了解
- django框架模块功能初步了解
- Python 框架之Flask初步了解
- .Net中初步了解ORM框架
- C语言和内存初步框架了解
- 初次接触volley网络框架,进行初步封装使用
- Android网络框架-Volley(一) 初步使用
- 几种C语言优化代码技巧
- C++拷贝构造函数(深拷贝,浅拷贝)
- mysql 启动错误
- 小结几个php操作office的类库
- 项目难题之PC和ARM串口莫名其妙无法通信的问题
- 联网框架--->volley初步了解
- hibernate缓存机制详细分析
- BZOJ1057【单调栈】
- C++ 简单贪吃蛇游戏
- 2.4带数据标签的散点图
- 【使用笔记】git在macos上的使用初步
- 第二章
- 苹果开发吐槽
- nginx 搭建 wordpress