Поиск…


Вступление

Эффективное кэширование с использованием бит-памяти. Это особенно важно, если ваше приложение использует анимацию, поскольку они будут остановлены во время очистки GC и сделают ваше приложение менее вялым для пользователя. Кэш позволяет повторно использовать объекты, которые дорого создавать. Если вы загружаете объект в память, вы можете думать об этом как кэш для объекта. Работа с растровым рисунком в android сложна. Важно, чтобы кешировать бимап, если вы собираетесь использовать его повторно.

Синтаксис

  • LruCache<String, Bitmap> mMemoryCache;//declaration of LruCache object.
  • void addBitmapToMemoryCache (String key, Bitmap bitmap) {} // объявление общего метода, добавляющего растровое изображение в кэш-память
  • Bitmap getBitmapFromMemCache (String key) {} // объявление универсального метода для получения бимака из кеша.

параметры

параметр подробности
ключ ключ для сохранения растрового изображения в кеше памяти
битовая карта растровое значение, которое будет кэшироваться в память

Кэш растровых изображений с использованием кеша LRU

Ключ LRU

Следующий пример кода демонстрирует возможную реализацию класса LruCache для кэширования изображений.

private LruCache<String, Bitmap> mMemoryCache;

Здесь строковое значение является ключом для значения битмапа.

// Get max available VM memory, exceeding this amount will throw an
// OutOfMemory exception. Stored in kilobytes as LruCache takes an
// int in its constructor.
final int maxMemory = (int) (Runtime.getRuntime().maxMemory() / 1024);

// Use 1/8th of the available memory for this memory cache.
final int cacheSize = maxMemory / 8;

mMemoryCache = new LruCache<String, Bitmap>(cacheSize) {
    @Override
    protected int sizeOf(String key, Bitmap bitmap) {
        // The cache size will be measured in kilobytes rather than
        // number of items.
        return bitmap.getByteCount() / 1024;
    }
};

Для добавления растрового изображения в кэш памяти

public void addBitmapToMemoryCache(String key, Bitmap bitmap) {
if (getBitmapFromMemCache(key) == null) {
        mMemoryCache.put(key, bitmap);
    }    
}

Для получения растрового изображения из кеша памяти

public Bitmap getBitmapFromMemCache(String key) {
    return mMemoryCache.get(key);
}

Для загрузки растрового изображения в изображение просто используйте getBitmapFromMemCache («Pass key»).



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow