zoukankan      html  css  js  c++  java
  • Volley框架的介绍使用

      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,感觉这个也很不错,也希望和大家交流经验。

     

    作者:杰瑞教育
    出处:http://www.cnblogs.com/jerehedu/ 
    本文版权归烟台杰瑞教育科技有限公司和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
     
  • 相关阅读:
    深度学习(十六) ReLU为什么比Sigmoid效果好
    逻辑回归和线性回归区别
    KNN理解
    词向量总结
    HTTP TCP/IP Socket
    AutoMapper控件
    Oracle数据库调优总结
    深度学习(十五) TextCNN理解
    从几张图来看看越来越难做的前端
    ES6学习笔记
  • 原文地址:https://www.cnblogs.com/jerehedu/p/4475671.html
Copyright © 2011-2022 走看看