package com.android.volley.toolbox;
import android.content.Context;
import android.graphics.Bitmap;
import android.support.v4.util.LruCache;
import com.android.volley.Request;
import com.android.volley.RequestQueue;
public class VolleyHelper {
private final static String TAG="VolleyHelper";
private static final int IMAGE_CACHE_SIZE = (int) (0.3f * Runtime.getRuntime().maxMemory());
private static VolleyHelper mInstance;
private RequestQueue mAPIRequestQueue, mImageLoaderRequestQueue;
private ImageLoader mImageLoader;
private static Context mCtx;
public static synchronized VolleyHelper getInstance(Context context) {
if (mInstance == null) {
mInstance = new VolleyHelper(context);
}
return mInstance;
}
private VolleyHelper(Context context) {
mCtx = context.getApplicationContext();
mAPIRequestQueue = getAPIRequestQueue();
mImageLoaderRequestQueue = getImageLoaderRequestQueue();
mImageLoader = new ImageLoader(mImageLoaderRequestQueue, new ImageLoader.ImageCache() {
int maxMemory = (int) (Runtime.getRuntime().maxMemory()/1024);
int cacheSize = (int) ((maxMemory/8));
private final LruCache<String, Bitmap> cache = new LruCache<String, Bitmap>(cacheSize){
@Override
protected int sizeOf(String key, Bitmap bitmap) {
return bitmap.getByteCount()/1024;
}
};
@Override
public Bitmap getBitmap(String url) {
Bitmap tmp = cache.get(url);
return tmp;
}
@Override
public void putBitmap(String url, Bitmap bitmap) {
cache.put(url, bitmap);
}
});
}
public RequestQueue getAPIRequestQueue() {
if (mAPIRequestQueue == null) {
// getApplicationContext() is key, it keeps you from leaking the
// Activity or BroadcastReceiver if someone passes one in.
mAPIRequestQueue = Volley.newRequestQueue(mCtx.getApplicationContext());
}
return mAPIRequestQueue;
}
public RequestQueue getImageLoaderRequestQueue() {
if (mImageLoaderRequestQueue == null) {
// getApplicationContext() is key, it keeps you from leaking the
// Activity or BroadcastReceiver if someone passes one in.
mImageLoaderRequestQueue = Volley.newRequestQueue(mCtx.getApplicationContext(), null, "images", 100*1014*1024);
}
return mImageLoaderRequestQueue;
}
public <T> void addToAPIRequestQueue(Request<T> req) {
getAPIRequestQueue().add(req);
}
public <T> void addToImageLoaderRequestQueue(Request<T> req) {
getAPIRequestQueue().add(req);
}
public ImageLoader getImageLoader() {
return mImageLoader;
}
}