package net.miz_hi.smileessence.cache; import android.graphics.Bitmap; import android.util.LruCache; import com.android.volley.VolleyError; import com.android.volley.toolbox.ImageLoader; import com.android.volley.toolbox.NetworkImageView; import net.miz_hi.smileessence.Client; import net.miz_hi.smileessence.util.UiHandler; public class ImageCache implements ImageLoader.ImageCache { private static ImageCache instance; private LruCache<String, Bitmap> lruCache; private ImageLoader imageLoader; static { instance = new ImageCache(); } private ImageCache() { int maxMemory = (int) (Runtime.getRuntime().maxMemory() / 1024); int cacheSize = maxMemory / 4; // 最大メモリに依存 lruCache = new LruCache<String, Bitmap>(cacheSize); imageLoader = new ImageLoader(Client.getRequestQueue(), this); } public static ImageCache getInstance() { if(instance == null) { instance = new ImageCache(); } return instance; } public static void setImageToView(String imageUrl, NetworkImageView view) { view.setImageUrl(imageUrl, getInstance().imageLoader); } public static void preCache(final String imageUrl) { new UiHandler() { @Override public void run() { getInstance().imageLoader.get(imageUrl, new ImageLoader.ImageListener() { @Override public void onResponse(ImageLoader.ImageContainer response, boolean isImmediate) { } @Override public void onErrorResponse(VolleyError error) { } }); } }.post(); } public static void clearCache() { getInstance().lruCache.evictAll(); } @Override public Bitmap getBitmap(String url) { return lruCache.get(url); } @Override public void putBitmap(String url, Bitmap bitmap) { lruCache.put(url, bitmap); } }