Android
LruCache
Recherche…
Remarques
Vous devez utiliser Lru Cache dans les applications où des charges de ressources répétitives affectent un comportement d’application fluide. Par exemple une galerie de photos avec de grandes vignettes (128x128).
Soyez toujours attentif à la taille du cache Lru car sa définition trop élevée peut affecter l'application.
Une fois que le cache Lru n'est plus utile, évitez de lui attribuer des références pour permettre au Garbage Collector de le nettoyer de la mémoire.
Pour des performances optimales, n'oubliez pas de charger des ressources telles que les images bitmap en utilisant les meilleures pratiques, comme la sélection d'une taille inSampleSize appropriée avant de l'ajouter au cache Lru.
Initialiser le cache
Le Lru Cache stockera toutes les ressources (valeurs) ajoutées pour un accès rapide jusqu'à ce qu'il atteigne une limite de mémoire, auquel cas il supprimera la ressource (valeur) la moins utilisée pour stocker la nouvelle.
Pour initialiser le cache Lru, vous devez fournir une valeur de mémoire maximale. Cette valeur dépend des exigences de votre application et de son importance pour conserver une utilisation fluide des applications. Une valeur recommandée pour une galerie d'images, par exemple, serait 1/8 de votre mémoire disponible maximale.
Notez également que le cache Lru fonctionne sur la base de la valeur clé. Dans l'exemple suivant, la clé est une String
et la valeur est une image Bitmap
:
int maxMemory = (int) (Runtime.getRuntime().maxMemory() / 1024);
int cacheSize = maxMemory / 8;
LruCache<String, Bitmap> = memoryCache = new LruCache<String, Bitmap>(cacheSize) {
protected int sizeOf(String key, Bitmap bitmap) {
return bitmap.getByteCount();
}
};
Ajout d'un bitmap (ressource) au cache
Pour ajouter une ressource au cache, vous devez fournir une clé et la ressource. Assurez-vous d'abord que la valeur n'est pas déjà dans le cache
public void addResourceToMemoryCache(String key, Bitmap resource) {
if (memoryCache.get(key) == null)
memoryCache.put(key, resource);
}
Obtenir un bitmap (Resouce) du cache
Pour obtenir une ressource du cache, transmettez simplement la clé de votre ressource (String dans cet exemple)
public Bitmap getResourceFromMemoryCache(String key) {
memoryCache.get(key);
}