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



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow