一起Talk Android吧(第三百三十六回: Android中的volley一)

各位看官们,大家好,上一回中咱们说的是Android中HTTP请求的例子,这一回中咱们说的例子是Android中的volley。闲话休提,言归正转。让我们一起Talk Android吧!

什么是Volley

看官们,我们在前面章回中介绍了HTTP的两种请求GET和POST,本章回中将介绍Volley。首先我们看看Volley是什么,它是Android中自带的HTTP库,它把HTTP中各种请求和响应操作封装成接口,我们通过这些接口就可以更加方便地完成HTTP中各种发送和响应操作。

Volley的优缺点

回想一下我们使用Java接口(HttpURLConnection)操作HTTP时除去正常的HTTP操作外,还需要处理线程、IO流,而使用Volley库就不需要做这些额外的工作了,因为它已经帮我们处理好这些额外工作了。除此之外,它具备以下特点(摘自官方文档):

  • 自动网络请求调度。
  • 多个并发网络连接。
  • 透明磁盘和具有标准 HTTP 缓存一致性的内存响应缓存。
  • 支持请求优先级。
  • 取消请求 API。您可以取消单个请求,也可以设置要取消的请求的时间段或范围。
  • 可轻松自定义,例如自定义重试和退避时间。
  • 强大的排序功能,让您可以轻松使用从网络异步提取的数据正确填充界面。
  • 调试和跟踪工具。

人非圣贤,孰能无过,Volley也有一些缺点:

  • 不支持同步请求操作;
  • 请求数量过大时性能较低;
  • 对于图片加载性能较低;

如何使用Volley

在实际项目中,我可以避开它的缺点,充分利用它的优点来实现HTTP操作,下面是具体的使用步骤:

  • 1.创建请求队列
  • 2.创建请求对象,并且重写其中的回调方法
  • 3.在回调方法中可以获取到服务器对请求的响应结果
  • 4.把请求对象添加到请求队列中,Volley会自动发起请求
  • 5.取消请求,清空请求队列
private void initSingleVolleyRequest() {
    mRequestQueue = Volley.newRequestQueue(this);
    mStringRequest = new StringRequest(Request.Method.GET, HTTP_URL, new Response.Listener<String>() {
        @Override
        public void onResponse(String response) {
            Log.d(TAG, "onResponse:  result: " + response);
        }
    }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            Log.d(TAG, "onErrorResponse: Error: "+error.toString());
        }
    });
}

private void initMultiVolleyRequest() {
    //init cache,and size of cache is 1MB
    Cache cache = new DiskBasedCache(getCacheDir(),1024*1024);
    Network network = new BasicNetwork(new HurlStack());
    mRequestQueue = new RequestQueue(cache,network);
    mRequestQueue.start();

    mStringRequest = new StringRequest(Request.Method.GET, HTTP_URL, new Response.Listener<String>() {
        @Override
        public void onResponse(String response) {
            Log.d(TAG, "onResponse:  result: " + response);
        }
    }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            Log.d(TAG, "onErrorResponse: Error: "+error.toString());
        }
    });
}

private void sendVolleyRequest() {
    if(mRequestQueue != null && mStringRequest != null) {
        mRequestQueue.add(mStringRequest);
    }
}


btVolley = (Button)findViewById(R.id.id_bt_Volley);
btVolley.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
       sendVolleyRequest();
    }
});


if(mRequestQueue != null) {
    mRequestQueue.cancelAll(new Object());
}

上面的程序只有主要功能的代码,其它代码省略了,此外,页面布局中只有一个Button,与布局相关的代码大家可以自已补充,我们在这里就不列出了。建议大家自己动手运行程序,通过程序的运行结果查看网站对HTTP请求的响应。关于上面的代码还有以下注意事项:

  • 1.在manifest文件中添加网络权限,不然会运行程序会发生异常;
  • 2.在build.gradle文件添加依赖:implementation ‘com.android.volley:volley:1.2.1’
  • 3.发起请求可以在主线程中运行,不需要像Java接口一样单独启动一个子线程;
  • 4.代码中可以发起多个请求和单个请求,这二者的不同之处在于创建请求队列时是的构造方法;
  • 5.程序中发起的是GET类型的HTTP请求,发起其它类型HTTP请求的方法与此类似,这里不再详细介绍;

看官们,关于Android中Volley的例子咱们就介绍到这里,欲知后面还有什么例子,且听下回分解!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

talk_8

真诚赞赏,手有余香

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值