Volley的使用

Volley是一个Google开发的一个Android平台的网络通信库,相比AsyncTask,Volley使得网络通信更加迅速,简单,可靠。Volley适用于网络请求频繁,单次请求数据量较小的场景。

Volley的功能:
1.异步获取JSON数据,网络图片资源
2.网络请求排序
3.网络请求优先级处理
4.缓存
5.多级别取消请求
6.与Activity生命周期联动

Volley库可从网络搜索获得,也可从git获取后编译得到

示例:
1.获取JSON数据

public void getJson()
    {
        RequestQueue requestQueue = Volley.newRequestQueue(this); //获取请求对象
        String url = "http://fanyi.youdao.com/openapi.do?keyfrom=fjkljlk345&key=819777360&type=data&doctype=json&version=1.1&q=%E8%8B%B9%E6%9E%9C";
        JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.GET,url,null,
                new Response.Listener<JSONObject>(){
                    @Override
                    //接收结果
                    public void onResponse(JSONObject response) {
                        System.out.println(response);
                    }
                },
                new Response.ErrorListener(){
            @Override
            public void onErrorResponse(com.android.volley.VolleyError args) {
                    System.out.println("请求出错");
            }
        }
        );
        requestQueue .add(jsonObjectRequest);
    }

2.异步加载图片

public void loadImage(){
        String imageURL = "https://www.baidu.com/img/bdlogo.png";
        RequestQueue requestQueue = Volley.newRequestQueue(this);
        final LruCache<String,Bitmap> lruCache = new LruCache<String, Bitmap>(20);
        ImageLoader.ImageCache imageCache = new ImageLoader.ImageCache() {
            @Override
            public Bitmap getBitmap(String s) {
                return lruCache.get(s);
            }

            @Override
            public void putBitmap(String s, Bitmap bitmap) {
                lruCache.put(s,bitmap);
            }
        };
        ImageLoader imageLoader = new ImageLoader(requestQueue,imageCache);
        ImageLoader.ImageListener imageListener = imageLoader.getImageListener(imageView, R.mipmap.ic_launcher, R.mipmap.ic_launcher);
        imageLoader.get(imageURL,imageListener);
    }

3.使用NetWorkImageView控件

NetWorkImageView是Volley库中的一个自定义的空间,它可以替代Android中的ImageView,在父级容器关闭后,NetWorkImageView会自动关闭自己的网络请求,不必考虑生命周期的问题。

XML布局文件代码

 <com.android.volley.toolbox.NetworkImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/netWorkImageView"
        />

方法代码

  public void loadNetWorkImageView(){
        RequestQueue requestQueue = Volley.newRequestQueue(this);
        String imageURL = "https://www.baidu.com/img/bdlogo.png";
        final LruCache<String,Bitmap> lruCache = new LruCache<String, Bitmap>(20);
        ImageLoader.ImageCache imageCache = new ImageLoader.ImageCache() {
            @Override
            public Bitmap getBitmap(String s) {
                return lruCache.get(s);
            }

            @Override
            public void putBitmap(String s, Bitmap bitmap) {
                lruCache.put(s,bitmap);
            }
        };
        ImageLoader imageLoader = new ImageLoader(requestQueue,imageCache);
        networkImageView.setTag("imageURL");
        networkImageView.setImageUrl(imageURL,imageLoader);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值