Android Cache de bitmap utilisant le cache LRU


Exemple

Cache LRU

L'exemple de code suivant illustre une implémentation possible de la classe LruCache pour la mise en cache des images.

private LruCache<String, Bitmap> mMemoryCache;

Ici, la valeur de la chaîne est la clé de la valeur bitmap.

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

Pour ajouter un bitmap au cache mémoire

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

Pour obtenir un bitmap du cache mémoire

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

Pour charger un bitmap dans imageview, utilisez simplement getBitmapFromMemCache ("Pass key").