Recherche…


Introduction

Mise en cache par bitmap efficace en mémoire: Cette fonctionnalité est particulièrement importante si votre application utilise des animations car celles-ci seront arrêtées lors du nettoyage du GC et rendront votre application trop lente pour l'utilisateur. Un cache permet de réutiliser des objets coûteux à créer. Si vous chargez un objet en mémoire, vous pouvez le considérer comme un cache pour l’objet. Travailler avec un bitmap dans android est délicat.

Syntaxe

  • LruCache<String, Bitmap> mMemoryCache;//declaration of LruCache object.
  • void addBitmapToMemoryCache (clé de chaîne, bitmap bitmap) {} // déclaration de la méthode générique ajoutant un bitmap à la mémoire cache
  • Bitmap getBitmapFromMemCache (clé de chaîne) {} // déclaration de la méthode générique pour obtenir la bimap du cache.

Paramètres

Paramètre Détails
clé clé pour stocker le bitmap dans la mémoire cache
bitmap valeur bitmap qui mettra en mémoire cache

Cache de bitmap utilisant le cache LRU

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").



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow