Android Volley框架的使用

Android SDK中提供了HttpClient 和 HttpUrlConnection两种方式用来处理网络操作,但当应用比较复杂的时候需要我们编写大量的代码处理很多东西:图像缓存,请求的调度等等.而HttpURLConnection和HttpClient的用法还是稍微有些复杂的,如果不进行适当封装的话,很容易就会写出不少重复代码.这个问题我们可以使用Android的volley框架来解决这个问题,volley简单易用,但是它只适合数据量较小,但是对数据操作比较频繁的情况.接下来简单介绍一下volley的使用.

    RequestQueue queue;
    ImageView iv;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //这个imageView用来存放要加载的图片
        iv = (ImageView) findViewById(R.id.iv);
        //创建一个请求队列,volley的请求队列只要一个就可以
        queue = Volley.newRequestQueue(this);
        //创建请求对象
        //下面用加载图片和获取字符串来说明volley框架的简单使用
        //获取字符串
        testStringRequest();
        //获取图片
        testImageRequest();
            private void testStringRequest() {
        try {
        //这里使用的是在网络上请求北京天气预报的信息,使用的是聚合数据的API接口
            String name = URLEncoder.encode("北京", "utf8");
            String url = "http://op.juhe.cn/onebox/weather/
            query?cityname="+name+"&key=你的appkey";
            //访问成功后会调用此监听器中的方法
            Listener<String> listener = new Listener<String>() {
                @Override
                public void onResponse(String arg0) {
                    Log.i("TAG", "访问成功"+arg0);
                //Gson是用来数据解析,WeatherBean是关羽天气信息的实体类
                    Gson gson = new Gson();
                    WeatherBean bean = gson.fromJson(arg0, WeatherBean.class);
                    //把解析到的数据在LogCat中输出一下
                    Log.i("TAG","WeatherBean:------>"+bean.toString());
                }
            };
            //访问失败后会调用此监听器中的方法
            ErrorListener errorListener = new ErrorListener() {

                @Override
                public void onErrorResponse(VolleyError arg0) {
                    Log.i("TAG", "访问失败"+arg0.getMessage());

                }
            };
            //建立获取字符串的请求
            StringRequest request = new StringRequest(url , listener , errorListener );
            //把创建的请求对象放到请求队列中
            queue.add(request);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    private void testImageRequest() {
    //建立图片加载请求,这个地址是在网上随意找的一个图片的地址
        ImageRequest request = new ImageRequest(        "http://img1.imgtn.bdimg.com/it/u=450944657,2119512812&fm=21&gp=0.jpg",
                new Listener<Bitmap>() {
                    @Override
                    public void onResponse(Bitmap arg0) {
                    //把加载的图片放到imageview中
                        iv.setImageBitmap(arg0);    
                    }
                }, 
                0, //设为0,表示不对图像大小不做改变 
                0,//设为0,表示不对图像大小不做改变 
                Bitmap.Config.ARGB_8888, 
                new ErrorListener() {

                    @Override
                    public void onErrorResponse(VolleyError arg0) {
                        Log.i("TAG", arg0.getMessage());
                    }
                });
        //把请求假如请求队列
        queue.add(request);
    }
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值