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对象
  • 图片加载





转载于:https://www.cnblogs.com/jerryer/p/4438978.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值