Android
Cache Bitmap
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").