Android 网络连接:Volley(齐射)之简单使用

一、Volley简介

  实现网络连接的方式有很多,如HttpURLConnection、HttpClient但是这二者都是apache推出的,在android中并不非常实用,而且我想google一定也很想有属于自己的网络请求方式而不是借用别人的。终于Google I/O 2013上,Volley发布了。Volley是Android平台上的网络通信库,能使网络通信更快,更简单,更健壮。
Volley又被称为齐射,并发,是Android上的网络通信库。我想看了下面这幅图Google IO的演讲上的配图你可能会更加理解了齐射的含义。
这里写图片描述

二、为什么使用Volley

2.1原因

1、Volley是google官方推出的网络通信方式,性能更稳定和强劲。
2、重要的一点还有Volley的架构设计
3、高效的get与post方式的数据请求交互,通信更简单,快捷。
4、网络图片加载与缓存

2.2功能

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

2.3Volley设计思想

Volley使用了线程池来作为基础结构,主要分为主线程,cache线程和network线程。
主线程和cache线程都只有一个,而NetworkDispatcher线程可以有多个,这样能解决比并行问题。
工作流程:每次发送一个请求放到缓存中(请求队列),查看请求队列中如果有该请求整在执行直接通过cache读取出,如果没有的话就进入线程池,如果线程池(Executor)中有空闲线程就执行请求,否则等待空闲线程,之后再执行请求。
注:这里线程池有最大的线程数,不会无限制的创建线程,节约了运行空间。
这里写图片描述

二、方式步骤

1、添加jar包和网络权限
eclipse:直接复制volley的jar包到libs下面
AS:app—>open Mudlue settings—>Dependencies—>+加进即可。
2、创建请求队列RequestQueue
3、创建StringRequest\JsonRequest\JsonArrayRequest
4、将请求加入到RequestQueue

三、范例

3.1GET方式请求

这里写图片描述

public class MainActivity extends Activity implements OnClickListener{
     private Button mbtn_con;
     private TextView mtext_context;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mbtn_con=(Button) findViewById(R.id.btn);
        mtext_context=(TextView) findViewById(R.id.textview_context);
        mbtn_con.setOnClickListener(this);
    }
    @Override
    public void onClick(View v) {
        switch (v.getId()) {
        case R.id.btn:
            RequestQueue queue=Volley.newRequestQueue(getApplicationContext());
            StringRequest request=new StringRequest(0, "http://www.baidu.com", new Listener<String>() {

                @Override
                public void onResponse(String arg0) {

                    mtext_context.setText(arg0);
                }
            }, new ErrorListener() {

                @Override
                public void onErrorResponse(VolleyError arg0) {
                    mtext_context.setText(arg0.toString());
                }
            });                 
            //将请求加入请求队列     
            queue.add(request);
            break;

        default:
            break;
        }

    }
3.2POST方式请求(在本地Serverlet服务器测试)

post请求由于参数不在url中,我们需要创建hashMap用于传递参数。
这里写图片描述

case R.id.btn:
            RequestQueue queue=Volley.newRequestQueue(getApplicationContext());
            StringRequest request=new StringRequest(Request.Method.POST, "http://192.168.0.30:8080/MyWebTest/MyTestServerlet", new Listener<String>() {

                @Override
                public void onResponse(String arg0) {

                    mtext_context.setText(arg0);
                }
            }, new ErrorListener() {

                @Override
                public void onErrorResponse(VolleyError arg0) {
                    mtext_context.setText(arg0.toString());
                }
            }){

                @Override
                protected Map<String, String> getParams()
                        throws AuthFailureError {
                    HashMap<String, String> map=new HashMap<String, String>();
                    map.put("username", "zhangsandege");
                    return map;
                }
            };                      
            queue.add(request);
            break;

注:其他的请求步骤也是一样的。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值