Volley框架的介绍使用_移动开发_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > 移动开发 > Volley框架的介绍使用

Volley框架的介绍使用

 2015/5/4 12:41:17  杰瑞教育  程序员俱乐部  我要评论(0)
  • 摘要:Volley是在2013年的GoogleI/O2013大会上发布的,是我们的网络通信更快,更简单,更方便。对于初学者来讲是一个很好的框架。简单来说,它提供了如下的便利功能:JSON,图像等的异步下载;网络请求的排序(scheduling)网络请求的优先级处理缓存多级别取消请求和Activity和生命周期的联动(Activity结束时同时取消所有网络请求)一、获取JSON对象1
  • 标签:使用

  Volley是在2013年的Google I/O 2013大会上发布的,是我们的网络通信更快,更简单,更方便。对于初学者来讲是一个很好的框架。

  简单来说,它提供了如下的便利功能:

  • JSON,图像等的异步下载;
  • 网络请求的排序(scheduling)
  • 网络请求的优先级处理
  • 缓存
  • 多级别取消请求
  • 和Activity和生命周期的联动(Activity结束时同时取消所有网络请求)
一、获取JSON对象

   1.1声明RequestQueue

  声明一个新的RequestQueue对象

private RequestQueue mRequestQueue; 

  在onCreate初始化mRequestQueue

mRequestQueue =  Volley.newRequestQueue(this);  

  声明并使用Request

JsonObjectRequest jr = new JsonObjectRequest(Request.Method.GET,url,null,new Response.Listener<JSONObject>() {  
            @Override  
            public void onResponse(JSONObject response) {  
                Log.i(TAG,response.toString());  
                parseJSON(response);  
                va.notifyDataSetChanged();  
                pd.dismiss();  
            }  
        },new Response.ErrorListener() {  
            @Override  
            public void onErrorResponse(VolleyError error) {  
                Log.i(TAG,error.getMessage());  
            }  
        });  
        mRequestQueue.add(jr);  

  Volley提供了JsonObjectRequest、JsonArrayRequest、StringRequest等Request形式。

JsonObjectRequest:返回JSON对象。

JsonArrayRequest:返回JsonArray。

StringRequest:返回String,这样可以自己处理数据,更加灵活。

二、加载网络图片
private Button myBtn;
    private ImageView myImageView;
    private ImageLoader imageLoader;
    private RequestQueue requestQueue;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_image_loader);
        requestQueue= Volley.newRequestQueue(getApplicationContext());//请求队列
        imageLoader=new ImageLoader(requestQueue, new BitmapCache());
        myBtn= (Button) findViewById(R.id.myImageLoaderBtn);
        myImageView=(ImageView)findViewById(R.id.myImageLoader);
        myBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                ImageLoader.ImageListener listener = ImageLoader.getImageListener(myImageView,R.drawable.ic_launcher, R.drawable.ic_launcher);
//后两个参数分别是加载的默认图和加载出错后要显示的图片
                imageLoader.get("http://192.168.191.1:8080/JerehEdu/image/logo.jpg", listener,200,200);
            }
        });
}

  在加载图片的时候使用到了BitmapCache这样一个类,这个类是我们继承了Volley中的ImageCache实现的,它能够对我们加载的图片进行一个缓存。

public class BitmapCache implements 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) {
                // TODO Auto-generated method stub
                return value.getRowBytes() * value.getHeight();
            }
        };
    }
    @Override
    public Bitmap getBitmap(String arg0) {
        // TODO Auto-generated method stub
        return mCache.get(arg0);
    }
    @Override
    public void putBitmap(String arg0, Bitmap arg1) {
        // TODO Auto-generated method stub
        mCache.put(arg0, arg1);
    }
}

  现在应用到的网络通讯框架有很多像如Volley这样有很多,最近也在研究xutils,感觉这个也很不错,也希望和大家交流经验。

 

发表评论
用户名: 匿名