Android 网络访问框架 Volley 基本使用

一. Volley 简介

        Volley 是Google推出的一个网络数据访问框架,该框架能够更加简单,快速地访问网络数据。

Android 网络访问框架 Volley 基本使用_第1张图片

二. Volley 使用

       1. 将Volley封装单例

public class VolleyManager {

    private volatile static VolleyManager mInstance;

    private RequestQueue mRequestQueue;

    public static VolleyManager getInstance() {
        if (mInstance == null) {
            synchronized (VolleyManager.class){
                if (mInstance == null){
                    mInstance = new VolleyManager();
                }
            }
        }
        return mInstance;
    }


    public void initVolley(Context context) {
        mRequestQueue = Volley.newRequestQueue(context);
    }

    public RequestQueue getRequestQueue() {
        if (mRequestQueue == null) {
            mRequestQueue = Volley.newRequestQueue(DaemonApplication.getAppContext());
        }
        return mRequestQueue;
    }
}

然后在Application 中进行初始化

 VolleyManager.getInstance().initVolley(mContext);

     2. String请求

      String请求很简单,只要将StringRequest添加到Volley的请求队列中就可以了

String postUrl = "https://www.baidu.com/";
        StringRequest stringRequest = new StringRequest(postUrl, new Response.Listener() {
            @Override
            public void onResponse(String response) {

            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                
            }
        });
        VolleyManager.getInstance().getRequestQueue().add(stringRequest);

 在相应的回调方法中进行后续处理。

    3.  Json请求

    类似与String的请求,直接创建一个JsonObjecRequest,然后添加到请求队列中就行了

JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(postUrl, new Response.Listener() {
            @Override
            public void onResponse(JSONObject response) {

            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {

            }
        });
        VolleyManager.getInstance().getRequestQueue().add(jsonObjectRequest);

当然,除了JsonObjectRequest,还有Json的数组请求,JsonArrayRequest,请求方式类似。

    4. 设置请求方式

    Volley中支持所有的请求方式,我们常用的有POST和GET,在volley中,可以用如下的方式使用:

JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(postUrl, new Response.Listener() {
            @Override
            public void onResponse(JSONObject response) {

            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {

            }
        }){
            @Override
            public int getMethod() {
                return Method.POST;
            }
        };
        
        VolleyManager.getInstance().getRequestQueue().add(jsonObjectRequest);

重写Request中的getMethod方法。

     5.设置请求参数

     请求参数的设置方式类似上述请求方式的设置方法,在request中方法getParams

@Override
protected Map getParams() throws AuthFailureError {
    return super.getParams();
}
     6.设置请求头

设置请求头也是类似上述设置请求参数的方法,直接重写getHeaders()

@Override
public Map getHeaders() throws AuthFailureError {
    return super.getHeaders();
}

     7.图片加载

volley提供方便加载图片的方法和控件。先看Volley提供的图片加载控件:NetworkImageView,使用方法如下:

ImageLoader imageLoader = VolleyManager.getInstance().getImageLoader();
imgNetWorkView.setImageUrl(Const.URL_IMAGE, imageLoader);

是不是很方便,接下来我们看普通的加载方式

imageLoader.get(Const.URL_IMAGE, ImageLoader.getImageListener(imageView, R.drawable.ico_loading, R.drawable.ico_error));

是不是很简单。

三. Volley框架优缺点:

 优点:

 1. 使用简单快速

 2. 扩展性强

 3. 强大的缓存机制

 4. 可以设置请求的优先级

 5. 可以取消请求

 缺点:

 1.下载文件的时候,性能较差, 由于其内部的实现方式,所以我不太推荐使用Volley中的图片加载。

   2.  由于图片加载和数据访问使用的是同一个网络请求实现,所以并没有设置wifi或者移动数据请求网络的处理,

可能用户在移动数据下也会去现在图片

       

         




你可能感兴趣的:(android)