Android
Caché de mapa de bits
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").