• Volley.jar的使用


    1.1 Volley简介

    2013年Google I/O大会上推出了一个新的网络通信框架——Volley。Volley可是说是把AsyncHttpClient和Universal-Image-Loader的优点集于了一身,既可以像AsyncHttpClient一样非常简单地进行HTTP通信,也可以像Universal-Image-Loader一样轻松加载网络上的图片。除了简单易用之外,Volley在性能方面也进行了大幅度的调整,它的设计目标就是非常适合去进行数据量不大,但通信频繁的网络操作,而对于大数据量的网络操作,比如说下载文件等,Volley的表现就会非常糟糕。

    1.2 Volley提供的功能
    简单来说,它提供了如下的便利功能:

    JSON,图像等的异步下载;

    网络请求的排序(scheduling)

    网络请求的优先级处理

    缓存

    多级别取消请求和Activity和生命周期的联动(Activity结束时同时取消所有网络请求)

    1.3 本次项目中Volley的使用

    *自定义请求队列RequestQueue

    package com.genting.membership.singleton;

    import android.content.Context;

    import com.android.volley.RequestQueue;

    import com.android.volley.toolbox.ImageLoader;

    import com.android.volley.toolbox.Volley;

    import com.googlecode.androidannotations.annotations.EBean;

    import com.googlecode.androidannotations.api.Scope;

    import com.macrokiosk.utilities.BitmapLruCache;

    @EBean(scope = Scope.Singleton)

    public class VolleySingleton {

          

           public RequestQueue requestQueue;

           public ImageLoader imageLoader;  

           public VolleySingleton(Context context){

                  if(context != null){

                        requestQueue = Volley.newRequestQueue(context);

                         imageLoader = new ImageLoader(requestQueue, new BitmapLruCache());

                  }

           }

    }

      *自定义任务类:JsonArrayRequest,StringRequest

    public class JsonArrayRequest extends JsonRequest<JSONArray> {

           public JsonArrayRequest(int method, String url, JSONObject jsonRequest,

                         Listener<JSONArray> listener, ErrorListener errorListener) {

                   super(method, url, (jsonRequest == null) ? null : jsonRequest.toString(),

                                 listener, errorListener);

           }

           @Override

           protected Response<JSONArray> parseNetworkResponse(NetworkResponse response) {

                  try {

                         String jsonString =

                                      new String(response.data, HttpHeaderParser.parseCharset(response.headers));

                         return Response.success(new JSONArray(jsonString),

                                      HttpHeaderParser.parseCacheHeaders(response));

                  } catch (UnsupportedEncodingException e) {

                         return Response.error(new ParseError(e));

                  } catch (JSONException je) {

                         return Response.error(new ParseError(je));

                  }

           }

             @Override

             public RetryPolicy getRetryPolicy() {

                  RetryPolicy mRetryPolicy=new DefaultRetryPolicy(60000, 1,1.0f);

                  return mRetryPolicy;

             }

    }

    *加载任务,发送请求

           JsonArrayRequest request=new JsonArrayRequest(Method.GET,Constants.BASIC_URL,null, getUrlSuccess(), getError("getBasicUrl"));

           request.setRetryPolicy(new DefaultRetryPolicy(60 * 1000, 1, 1.0f));

        mRequestQueue.add(request);

    *取消请求任务

     SoapRequest.setTag(this);其中this为设置的标签

     mVolley.requestQueue.cancelAll(this);其中this为刚才设置的标签

  • 相关阅读:
    python base64.b64decode 等号可以随便加
    MySQL 5.7 数据库的忘记 root 登录密码处理
    霸州录——第一章 名存实亡(下)
    三 工具虽微小 入门不可少
    霸州录——第一章 名存实亡(中)
    霸州录——第一章 名存实亡(上)
    一 欲行网络道,入乡须随俗
    霸州录——楔子
    【第一章】编译原理基础
    TensorFlow
  • 原文地址:https://www.cnblogs.com/ruirui2015/p/4923630.html
Copyright © 2020-2023  润新知