android 通信之volly

一、简介

技术分享

上图是谷歌2013IO大会上发布volly的示意图。由图片可以看出volly适用于数据量不大而请求频繁的网络需求;


volly提供的功能:

1:JSON、图片(异步)

2:网络请求排序

3:网络请求优先级处理

4:缓存

5:多级别的屈晓请求

6:与activity生命周期联动(activity结束时结束所有网络请求)

二、使用:

volly主页:http://android.googlesource.com/platform/frameworks/volley

1.下载库

2. 导出为JAR

3.导入自己的工程作为库(支持sdk版本8以上的)



获取JASON数据

    void getJSONVolley(){
           RequestQueue requestQueue = Volley.newRequestQueue(this);
           String JSONDateUrl = "http://lll";

           JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(

    Request.Mothod.GET,JSONDateUrl,

    null,

    new Response.Listener<JSONObject>(){                                                                      pubilc void onRequestJSONObject response)  {}},

    new Request.onErrorResponse(com.android.volley. VolleyError arg0){}});

    requestQueue.add(jsonObjectRequest);
    requestQueue.start();
    }


获取图片资源:

    public void LoadImageVolly(){
     
            String imagurl ="http://";
     
            RequestQueue requestQueue = Volly.newRequestQueue(this);
     
            final LruCache<String,Bitmap> lurcache = new LurCache<String,Bitmap>(20);
            ImageCache imageCache = new ImageCache(){
     
                      @override
                      public void putBitmap(String key,Bitmap value){                                           lurcache.put(key,value);
    }                                                                                            
                       @override
                       public Bitmap getBitmap(String key,Bitmap value){                                             lurcache.get(key,value);                    
              }        
              ImageLoader imageLoader = new ImageLoader(requestQueue,imageCache);
     
              ImageLister listener = imageLoader.getImageListener(
    imageview,R.drawable.ic_launcher,R.drawable.ic_launcher);             imageLoader.get(imageurl,listener);    
       
    }}


volly提供了一个新控件networkimageview替代传统的imageview
    public void NetworkImageViewVolley(){
       String imageurl = "http://XXXXX";
       
       RequestQueue requestQueue = Volley.newRequestQueue(this);
       final LruCache<String,Bitmap> lruCache =new LruCache<String,Bitmap>(20);
       ImageCache imageCache = new ImageCache(){
       
           @override
           public void putBitmap(String key,Bitmap value){
           
                lruCache.put(key,value);
               
           }
           
          @override
          public Bitmap getBitmap(String key){
         
              return lruCache.get(key);
             
          }
         
       };
       
      ImageLoader imageLoader = new ImageLoader(requestQueue,imageCache);
     

    imageview.setImageUrl(imageUrl,imageLoader)
     
    }
 总结:Volley使用了线程池来作为基础结构,主要分为主线程,cache线程和network线程。
主线程和cache线程都只有一个,而NetworkDispatcher线程可以有多个,这样能解决比并行问题。

Volley应该是简化了网络通信的一些开发,特别是针对如下两种情况:

  • JSON对象
  • 图片加载





郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。