Sök…


Introduktion

Minneseffektiv bitmapp-cache: Detta är särskilt viktigt om din applikation använder animationer eftersom de kommer att stoppas under GC-rensning och gör att din applikation verkar trög för användaren. En cache tillåter återanvändning av objekt som är dyra att skapa. Om du laddar på ett objekt i minnet kan du tänka på detta som en cache för objektet. Att arbeta med bitmapp i Android är svårt. Det är viktigare att cache bimappen om du kommer att använda det upprepade gånger.

Syntax

  • LruCache<String, Bitmap> mMemoryCache;//declaration of LruCache object.
  • void addBitmapToMemoryCache (String key, Bitmap bitmap) {} // deklaration av generisk metod som lägger till bitmapp i cacheminnet
  • Bitmap getBitmapFromMemCache (strängnyckel) {} // deklaration av generisk metod för att få bimap från cache.

parametrar

Parameter detaljer
nyckel för att lagra bitmapp i minnescachen
bitmapp bitmappsvärde som cache i minnet

Bitmapp-cache med LRU-cache

LRU-cache

Följande exempelkod visar en möjlig implementering av LruCache-klassen för caching av bilder.

private LruCache<String, Bitmap> mMemoryCache;

Här är strängvärdet nyckeln för bitmappsvärde.

// 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;
    }
};

För att lägga till bitmapp i minnescachen

public void addBitmapToMemoryCache(String key, Bitmap bitmap) {
if (getBitmapFromMemCache(key) == null) {
        mMemoryCache.put(key, bitmap);
    }    
}

För att få bitmapp från minnescachen

public Bitmap getBitmapFromMemCache(String key) {
    return mMemoryCache.get(key);
}

För att ladda bitmapp i imageview använder du bara getBitmapFromMemCache ("Passnyckel").



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow