Android Volley ImageLoader – параметр BitmapLruCache?

У меня возникли проблемы с реализацией кэша изображений с использованием новой библиотеки Volley. В презентации код выглядит так:

mRequestQueue = Volley.newRequestQueue(context); mImageLoader = new ImageLoader(mRequestQueue, new BitmapLruCache()); 

BitmapLruCache, очевидно, не включен в набор инструментов. Любая идея, как ее реализовать или указать на некоторые ресурсы?

http://www.youtube.com/watch?v=yhv8l9F44qo @ 14: 38

Благодаря!

     import android.graphics.Bitmap; import android.support.v4.util.LruCache; public class BitmapLruCache extends LruCache implements ImageCache { public static int getDefaultLruCacheSize() { final int maxMemory = (int) (Runtime.getRuntime().maxMemory() / 1024); final int cacheSize = maxMemory / 8; return cacheSize; } public BitmapLruCache() { this(getDefaultLruCacheSize()); } public BitmapLruCache(int sizeInKiloBytes) { super(sizeInKiloBytes); } @Override protected int sizeOf(String key, Bitmap value) { return value.getRowBytes() * value.getHeight() / 1024; } @Override public Bitmap getBitmap(String url) { return get(url); } @Override public void putBitmap(String url, Bitmap bitmap) { put(url, bitmap); } } 

    Ficus предоставляет этот пример кода для Bitmap LRU:

    https://gist.github.com/ficusk/5614325

    Ниже приведен пример использования кэша LRU на основе диска с Volley. Он основан на использовании версии DiskLruCache AOSP, поддерживаемой Jake Wharton. http://blogs.captechconsulting.com/blog/raymond-robinson/google-io-2013-volley-image-cache-tutorial

    Изменить: я обновил проект, включив в LOC-кеш памяти в качестве реализации по умолчанию, поскольку это рекомендуемый метод. Volley неявно обрабатывает кеш-диск на своем кэше L2. Кэш изображения – это только кеш L1. Я обновил исходное сообщение и добавил более подробную информацию: http://www.thekeyconsultant.com/2013/06/update-volley-image-cache.html .

    То, что я советую, использует Bitmap Cache Singleton, поэтому этот кеш будет доступен в течение всего срока действия вашего приложения.

     public class BitmapCache implements ImageCache { private LruCache mMemoryCache; private static BitmapCache mInstance; private BitmapCache(Context ctx) { final int memClass = ((ActivityManager) ctx .getSystemService(Context.ACTIVITY_SERVICE)).getMemoryClass(); // Use 1/16th of the available memory for this memory cache. final int cacheSize = 1024 * 1024 * memClass / 16; mMemoryCache = new LruCache(cacheSize) { @Override protected int sizeOf(String key, Bitmap value) { return value.getRowBytes() * value.getHeight(); } }; } public static BitmapCache getInstance(Context ctx) { if (mInstance == null) { mInstance = new BitmapCache(ctx); } return mInstance; } @Override public Bitmap getBitmap(String url) { return mMemoryCache.get(url); } @Override public void putBitmap(String url, Bitmap bitmap) { mMemoryCache.put(url, bitmap); } } 

    это входит в новый API для обработки OOM

     public class BitmapMemCache extends LruCache implements ImageCache { public BitmapMemCache() { this((int) (Runtime.getRuntime().maxMemory() / 1024) / 8); } public BitmapMemCache(int sizeInKiloBytes) { super(sizeInKiloBytes); } @Override protected int sizeOf(String key, Bitmap bitmap) { int size = bitmap.getByteCount() / 1024; return size; } public boolean contains(String key) { return get(key) != null; } public Bitmap getBitmap(String key) { Bitmap bitmap = get(key); return bitmap; } public void putBitmap(String url, Bitmap bitmap) { put(url, bitmap); } } 
    Interesting Posts

    Окно выключения / перезагрузки Windows / Windows 7

    Как скомпилировать 64-битное приложение с помощью Visual C ++ 2010 Express?

    Как увеличить высоту строки в Excel с помощью X. Т.е. Добавить вертикальное заполнение ячейки

    Как исключить модуль из сборки реактора Maven?

    Преобразование разделенных запятыми элементов в столбцы

    Как добавить Stacktrace или вариант отладки при создании проекта Android Studio

    Как я могу сделать Firefox аннотированные ссылки, которые указывают на такие файлы, как PDF-файлы, которые не будут открываться в Firefox?

    objective C: Modulo bias

    Поведение Stream.skip с неупорядоченной работой терминала

    Как заставить Excel открывать второе пустое окно при открытии файла из проводника?

    Блокирующие объявления от ISP

    Автозаполнение большого количества ячеек в Excel?

    Обработка MySQL datetime и временных меток в Java

    ListFragment не принимает мой макет

    Как написать защиту USB-ключа?

    Давайте будем гением компьютера.