Volley使用(1)
来源:互联网 发布:python rpc java 编辑:程序博客网 时间:2024/06/11 04:48
Volley使用
参考博客
郭神 http://blog.csdn.net/guolin_blog/article/details/17482165
http://www.cnblogs.com/zyw-205520/p/4950357.html
- 设计目标就是非常适合去进行数据量不大,但通信频繁的网络操作,而对于大数据量的网络操作,比如说下载文件等,Volley的表现就会非常糟糕。
- 自动调度网络请求
- 多个并发的网络连接
- 通过使用标准的HTTP缓存机制保持磁- 盘和内存响应的一致
- 支持请求优先级
- 支持取消请求的强大API,可以取消单个请求或多个
- 易于定制
- 健壮性:便于正确的更新UI和获取数据
- 包含调试和追踪工具
Volley中的RequestQueue 和 Request
- RequestQueue 用来执行请求的请求队列
- Request 用来构造一个请求对象
- Request对象主要有以下几种类型:
- StringRequest 响应的主体为字符串
- JsonArrayRequest 发送和接收JSON数组
- JsonObjectRequest 发送和接收JSON对象
- ImageRequest 发送和接收Image
StringRequest
第一步 RequestQueue requestQueue = RequestQueueManager.getInstance(StringActivity.this); 第二步 StringRequest stringRequest = new StringRequest( "https://www.baidu.com", new Response.Listener<String>() { @Override public void onResponse(String s) { tv_show.setText(s); } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError volleyError) { Log.e(TAG, "onErrorResponse: " + volleyError); } }); 第三步 requestQueue.add(stringRequest);RequestQueue是一个请求队列对象,它可以缓存所有的HTTP请求,然后按照一定的算法并发地发出这些请求。RequestQueue内部的设计就是非常合适高并发的,因此我们不必为每一次HTTP请求都创建一个RequestQueue对象,这是非常浪费资源的,基本上在每一个需要和网络交互的Activity中创建一个RequestQueue对象就足够了。
JsonObjectRequest
String url = "http://api.androidhive.info/volley/person_object.json"; JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(url, null, new Response.Listener<JSONObject>() { @Override public void onResponse(JSONObject jsonObject) { tv_object.setText(jsonObject.toString()); } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError volleyError) { } }); RequestQueueManager.getInstance(JsonObjectActivity.this).add(jsonObjectRequest);
ImageRequest 没有缓存的
ImageRequest imageRequest = new ImageRequest( "http://img5.duitang.com/uploads/item/201409/14/20140914162144_MBEmX.jpeg", new Response.Listener<Bitmap>() { @Override public void onResponse(Bitmap bitmap) { iv.setImageBitmap(bitmap); Log.e(TAG, "onResponse: " ); } }, 0 , 0 , Bitmap.Config.RGB_565,#这里的0 ,0 , Bitmap.Config.RGB_565,指定允许图片最大的宽度和高度,如果指定的网络图片的宽度或高度大于这里的最大值,则会对图片进行压缩,指定成0的话就表示不管图片有多大,都不会进行压缩。第五个参数用于指定图片的颜色属性, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError volleyError) { iv.setImageResource(R.mipmap.ic_launcher); Log.e(TAG, "onErrorResponse: " ); } }); RequestQueueManager.getInstance(imageNoCacheActivity.this).add(imageRequest);
前面三个的操作基本上都一样
ImageLoader 缓存
ImageLoader imageLoader = new ImageLoader(RequestQueueManager.getInstance(imageCacheActivity.this), new BitmapCache()); ImageLoader.ImageListener listener = ImageLoader.getImageListener(iv , R.drawable.de,R.drawable.error);#第一个参数指定用于显示图片的ImageView控件,第二个参数指定加载图片的过程中显示的图片,第三个参数指定加载图片失败的情况下显示的图片 imageLoader.get("http://img.my.csdn.net/uploads/201404/13/1397393290_5765.jpeg",listener); } private class BitmapCache implements ImageLoader.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) { return value.getRowBytes()*value.getHeight(); } }; } @Override public Bitmap getBitmap(String url) { return mCache.get(url); } @Override public void putBitmap(String url, Bitmap bitmap) { mCache.put(url,bitmap); } }
阅读全文
0 0
- Volley使用(1)
- Volley(1)的使用
- Volley使用(1)
- volley使用心得(1)
- Volley 使用
- Volley使用
- volley使用
- Volley使用
- volley使用
- Volley使用
- Volley使用
- Volley使用
- 使用 Volley
- android的volley框架使用日志1
- Volley(1)——基本使用
- Android Volley,使用Volley加载网络图片
- Android Volley使用之一:Volley基础用法
- Volley框架(一):使用Volley请求数据
- NYOJ:56-阶乘因式分解(一)
- python语法 --list,tuple, str格式化,iterable
- 创建war包和部署war包,以及实施相关的工具和unix命令
- JAVA-25.2-js提高篇、BOM编程、事件编程、DOM编程、js正则表达式、表单验证案例
- Drools结合maven
- Volley使用(1)
- css盒子模型
- 浏览器中常见bug的解决方法
- 虚拟光驱不能打开bin文件
- 面试题
- CentOS7 普通用户安装redis-3.2.9
- openflow 资料汇总
- Android启动
- 洛谷1880 石子合并