package com.dpt.TNetwork.net; import android.content.Context; import android.text.TextUtils; import com.android.volley.Request; import com.android.volley.RequestQueue; import com.android.volley.VolleyLog; import com.android.volley.toolbox.ImageLoader; import com.android.volley.toolbox.Volley; /** * Created by dupengtao on 2014/6/14. */ public class VolleyController { private static final String TAG=VolleyController.class.getSimpleName(); private static VolleyController controller; private final Context mContext; private ImageLoader mImageLoader; private RequestQueue mRequestQueue; private LruBitmapCache mLruBitmapCache; private VolleyController(Context context) { mContext=context; } public static synchronized VolleyController getInstance(Context context){ if (controller==null){ controller= new VolleyController(context); } return controller; } /** * @return The Volley Request queue, the queue will be created if it is null */ public RequestQueue getRequestQueue() { // lazy initialize the request queue, the queue instance will be // created when it is accessed for the first time if (mRequestQueue == null) { mRequestQueue = Volley.newRequestQueue(mContext); } return mRequestQueue; } /** * Adds the specified request to the global queue, if tag is specified * then it is used else Default TAG is used. * * @param req * @param tag */ public <T> void addToRequestQueue(Request<T> req, String tag) { // set the default tag if tag is empty req.setTag(TextUtils.isEmpty(tag) ? TAG : tag); VolleyLog.d("Adding request to queue: %s", req.getUrl()); getRequestQueue().add(req); } /** * Adds the specified request to the global queue using the Default TAG. * * @param req */ public <T> void addToRequestQueue(Request<T> req) { // set the default tag if tag is empty req.setTag(TAG); getRequestQueue().add(req); } /** * Cancels all pending requests by the specified TAG, it is important * to specify a TAG so that the pending/ongoing requests can be cancelled. * * @param tag */ public void cancelPendingRequests(Object tag) { if (mRequestQueue != null) { mRequestQueue.cancelAll(tag); } } public ImageLoader getImageLoader() { getRequestQueue(); if (mImageLoader == null) { mLruBitmapCache = new LruBitmapCache(); mImageLoader = new ImageLoader(this.mRequestQueue,mLruBitmapCache); } return this.mImageLoader; } public LruBitmapCache getLruBitmapCache() { return mLruBitmapCache; } }