Volley使用详情

2019-12-20  本文已影响0人  212_8faa

1.Volley主要特点

2.Volley使用

1.导包
implementation'com.navercorp.volleyextensions:volley-requests:2.0.1'
2.创建RequestQueue
RequestQueue requestQueue = Volley.newRequestQueue(this.getApplicationContext());

可以自定义创建RequestQueue,控制返回结果是否在主线程

默认通过Volley创建的RequestQueue
public RequestQueue(Cache cache, Network network, int threadPoolSize) {
     this(cache, network, threadPoolSize, new ExecutorDelivery(new Handler(Looper.getMainLooper())));
}
自定义创建(自定创建时可以使返回结果不在UI线程处理)
public RequestQueue(Cache cache, Network network, int threadPoolSize, ResponseDelivery delivery) {
    mCache = cache;
    mNetwork = network;
    mDispatchers = new NetworkDispatcher[threadPoolSize];
    mDelivery = delivery;
}
3.String请求
StringRequest request = new StringRequest(Request.Method.POST, url, new Response.Listener<String>() {
            @Override
            public void onResponse(String response) {
                 //处理返回结果(默认创建的RequestQueue在主线程)
            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                 //处理返回错误信息(默认创建的RequestQueue在主线程)
            }
        });
requestQueue.add(request);
4.JSONObject请求
JsonObjectRequest request = new JsonObjectRequest(Request.Method.POST, url, jsonRequest, new Response.Listener<JSONObject>() {
        @Override
        public void onResponse(JSONObject response) {
             //处理返回结果(默认创建的RequestQueue在主线程)
        }
    }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
             //处理返回错误信息(默认创建的RequestQueue在主线程)
        }
    });
requestQueue.add(request);
5.自定义Request请求

定义类继承Request<T>,重写parseNetworkResponse函数可以结合JSON解析工具

@Override
protected Response<T> parseNetworkResponse(NetworkResponse response) {
      //异步线程中处理返回数据解析
}
6.同步请求
RequestFuture<String> future = RequestFuture.newFuture();
StringRequest stringRequest = new StringRequest("",future,future);
requestQueue.add(stringRequest);
String response = future.get();//该方法为同步方法,其中使用wait等待结果返回被notify
//String response = future.get(1500, TimeUnit.MILLISECONDS);//设置超时时间

3.总结

Volley适合数据量小,通信频繁的网络操作。android绝大多数都属于这种类型,但是对于数据量比较大的操作,比如:下载,就不太适用了。

上一篇下一篇

猜你喜欢

热点阅读