Buscar..


Introducción

Caché de mapa de bits eficiente en memoria: esto es particularmente importante si su aplicación usa animaciones, ya que se detendrán durante la limpieza del GC y harán que su aplicación parezca lenta para el usuario. Un caché permite reutilizar objetos que son caros de crear. Si carga un objeto en la memoria, puede pensar en esto como un caché para el objeto. Trabajar con un mapa de bits en Android es complicado. Es más importante almacenar el bimap en caché si lo va a usar repetidamente.

Sintaxis

  • LruCache<String, Bitmap> mMemoryCache;//declaration of LruCache object.
  • void addBitmapToMemoryCache (clave de cadena, mapa de bits de mapa de bits) {} // declaración del método genérico que agrega un mapa de bits en la memoria caché
  • Bitmap getBitmapFromMemCache (String key) {} // declaración del método genérico para obtener bimap desde el caché.

Parámetros

Parámetro Detalles
llave clave para almacenar bitmap en memoria caché
mapa de bits valor de mapa de bits que se almacenará en la memoria caché

Caché de mapa de bits utilizando caché LRU

Caché LRU

El siguiente código de ejemplo muestra una posible implementación de la clase LruCache para almacenar imágenes en caché.

private LruCache<String, Bitmap> mMemoryCache;

Aquí el valor de cadena es clave para el valor de mapa de bits.

// 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;
    }
};

Para agregar bitmap a la memoria caché

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

Para obtener bitmap desde la memoria caché

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

Para cargar el mapa de bits en la vista de imagen, use getBitmapFromMemCache ("Clave de acceso").



Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow