当前位置:   article > 正文

Volley框架-------自己理解_volley这个框架的理解

volley这个框架的理解
Volley可是说是把AsyncHttpClient和Universal-Image-Loader的优点集于了一身,既可以像AsyncHttpClient一样非常简单地进行HTTP通信,也可以像Universal-Image-Loader一样轻松加载网络上的图片。除了简单易用之外,Volley在性能方面也进行了大幅度的调整,它的设计目标就是非常适合去进行数据量不大,但通信频繁的网络操作,而对于大数据量的网络操作,比如说下载文件等,Volley的表现就会非常糟糕。

********************************************************

volley框架总结,数据量小,适合小数据的传输下载,扩展性强,内部是基于大量的接口设计,可配置性强,而且开源,适合配置属于自己的volley框架,包括请求头处理,缓存机制的支持,安卓api9以下是用httpclient来实现,9以上使用。volley默认只有磁盘缓存,并且是默认开启。

1.网络请求。需要先实例化消息队列,一般是在application里实现的,

两种方式get和post,get请求网络数据需要三个参数,url,成功的接口回调还有失败的接口回调,post请求需要声明一下post的模式(相比get就在三个参数前面多加了这一个参数),并且在匿名内部类里重写一个getparams方法,在里面put相应的参数既可。

  1. StringRequest(Request.Method.POST,url,Listener,ErrorListener){
  2. public Map<String,String> getParams(){
  3. return map;
  4. }
  5. }

然后要给这个request请求,添加到消息队列中,并且设置tag,用于在程序结束中取消这个请求,

请求数据需要两个dispatcher分发的方法,一个是CacheDispatcher方法,另一个是NetworkDispatcher,两个都是线程,不过一个是走缓存一个是走网络。加载时,会先走缓存。如果未缓存,或者缓存失效以及缓存刷新就会走NetworkDispatcher。最后NetworkDispatcher将数据的结果返回给ResponseDelivery(结果分发接口),

2.图片加载ImageRequest
                 * 参数一:url地址
                 * 参数二:成功的回调监听
                 * 参数三四:图片的最大宽高,这个属性一般和ScaleType属性来连用,当设置为0是表示不缩放
                 * 参数五:缩放类型
                 * 参数六:图片的解码类型(ARGB8888,ARGB4444,RGB565,ALPHA8)
                 * 参数七:图片显示前的处理(显示为圆角的或者圆形图片)
                 * 参数八:错误或者失败的回调 

  1. ImageRequest imageRequest = new ImageRequest(
  2. url,
  3. new Response.Listener<Bitmap>() {
  4. @Override
  5. public void onResponse(Bitmap bitmap) {
  6. imageView.setImageBitmap(bitmap);
  7. }
  8. },
  9. 0,0,
  10. ImageView.ScaleType.CENTER_CROP,
  11. Bitmap.Config.RGB_565,
  12. null,
  13. null
  14. );
如同get和post请求一样,把这个imageRequest请求添加到最开始实例化的消息队列中。

3.ImageLoader         相比ImageRequest更加高效,还可以对图片缓存


  1. //1.实例化ImageLoader
  2. ImageLoader imageLoader = new ImageLoader(requestQueue,imageCache);
  3. //2.加载显示图片
  4. ImageListener imageListener = imageLoader.getImageListener(imageView,R.default.icon,R.error.icon);
  5. //可以使用四个参数的方法,自动处理图片的宽高,能防止内存溢出。
  6.  imageLoader.get(url,imageListener);

4.NetworkImageView

一个图片的控件com.android.volley.NetworkImageView。

在java代码中绑定该控件后,可以直接该控件点调用相关的属性。

NetworkImageView nImageView;

ImageLoader imLoader = new ImageLoader(mQueue, new BitmapLruCache());  
        nImageView.setDefaultImageResId(R.drawable.ic_launcher);  //默认
        nImageView.setErrorImageResId(R.drawable.ic_launcher);  // 错误
        nImageView.setImageUrl(url, imLoader); 


声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/105975
推荐阅读
相关标签
  

闽ICP备14008679号