Android
LRUCache
Ricerca…
Osservazioni
È necessario utilizzare Lru Cache in applicazioni in cui carichi di risorse ripetitivi potrebbero influire sul corretto funzionamento dell'app. Ad esempio una galleria fotografica con miniature grandi (128x128).
Fai sempre attenzione con le dimensioni della cache Lru poiché l'impostazione troppo alta potrebbe influire sull'app.
Dopo che la Lru Cache non è più utile, evita di tenere qualsiasi riferimento ad essa per consentire a Garbage Collector di ripulirlo dalla memoria.
Per prestazioni ottimali, ricordati di caricare risorse come le bitmap usando le migliori pratiche come selezionare un appropriato inSampleSize prima di aggiungerlo alla cache Lru.
Inizializzazione della cache
The Lru Cache memorizzerà tutte le risorse aggiunte (valori) per l'accesso rapido fino a raggiungere un limite di memoria, nel qual caso farà cadere la risorsa meno utilizzata (valore) per memorizzare quella nuova.
Per inizializzare la cache Lru è necessario fornire un valore di memoria massimo. Questo valore dipende dai requisiti dell'applicazione e dalla criticità della risorsa per mantenere un uso regolare dell'app. Ad esempio, un valore consigliato per una galleria di immagini sarebbe 1/8 della memoria massima disponibile.
Si noti inoltre che Lru Cache funziona su una base di valori-chiave. Nell'esempio seguente, la chiave è una String
e il valore è una 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();
}
};
Aggiunta di una bitmap (risorsa) alla cache
Per aggiungere una risorsa alla cache è necessario fornire una chiave e la risorsa. Innanzitutto assicurati che il valore non sia già nella cache
public void addResourceToMemoryCache(String key, Bitmap resource) {
if (memoryCache.get(key) == null)
memoryCache.put(key, resource);
}
Ottenere una bitmap (Resouce) dalla cache
Per ottenere una risorsa dalla cache basta passare la chiave della tua risorsa (String in questo esempio)
public Bitmap getResourceFromMemoryCache(String key) {
memoryCache.get(key);
}