Android
Bitmap Cache
Ricerca…
introduzione
Memoria di caching bitmap efficiente: questo è particolarmente importante se l'applicazione utilizza le animazioni in quanto verranno interrotte durante la pulizia di GC e renderà l'applicazione pigra all'utente. Una cache consente di riutilizzare oggetti che sono costosi da creare. Se si carica l'oggetto in memoria, si può pensare a questo come una cache per l'oggetto. Il lavoro con bitmap in Android è complicato. È più importante memorizzare nella cache il bimap se lo si utilizzerà ripetutamente.
Sintassi
-
LruCache<String, Bitmap> mMemoryCache;//declaration of LruCache object.
- void addBitmapToMemoryCache (String key, Bitmap bitmap) {} // dichiarazione del metodo generico che aggiunge bitmap nella memoria cache
- Bitmap getBitmapFromMemCache (Chiave stringa) {} // dichiarazione del metodo generico per ottenere bimap dalla cache.
Parametri
Parametro | Dettagli |
---|---|
chiave | chiave per memorizzare bitmap nella memoria cache |
bitmap | valore bitmap che verrà memorizzato nella cache |
Cache bitmap con cache LRU
LRU Cache
Il seguente codice di esempio mostra una possibile implementazione della classe LruCache per la memorizzazione nella cache delle immagini.
private LruCache<String, Bitmap> mMemoryCache;
Qui il valore stringa è la chiave per il valore 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;
}
};
Per aggiungere bitmap alla memoria cache
public void addBitmapToMemoryCache(String key, Bitmap bitmap) {
if (getBitmapFromMemCache(key) == null) {
mMemoryCache.put(key, bitmap);
}
}
Per ottenere bitmap dalla memoria cache
public Bitmap getBitmapFromMemCache(String key) {
return mMemoryCache.get(key);
}
Per caricare bitmap in imageview basta usare getBitmapFromMemCache (" Passkey ").