Suche…


Einführung

Speichereffizientes Bitmap-Caching: Dies ist besonders wichtig, wenn Ihre Anwendung Animationen verwendet, da diese während der GC-Bereinigung angehalten werden und Ihre Anwendung für den Benutzer träge erscheint. Ein Cache ermöglicht die Wiederverwendung von Objekten, deren Erstellung teuer ist. Wenn Sie ein Objekt in den Speicher laden, können Sie sich das als Cache für das Objekt vorstellen. Die Arbeit mit Bitmap in Android ist schwierig. Es ist wichtiger, die Bimap zwischenzuspeichern, wenn Sie sie wiederholt verwenden.

Syntax

  • LruCache<String, Bitmap> mMemoryCache;//declaration of LruCache object.
  • void addBitmapToMemoryCache (String-Schlüssel, Bitmap-Bitmap) {} // Deklaration einer generischen Methode, die Bitmap in den Cache-Speicher hinzufügt
  • Bitmap getBitmapFromMemCache (String key) {} // Deklaration einer generischen Methode zum Abrufen von Bimap-Daten aus dem Cache.

Parameter

Parameter Einzelheiten
Schlüssel Schlüssel zum Speichern der Bitmap im Speicher-Cache
Bitmap Bitmap-Wert, der im Arbeitsspeicher zwischengespeichert wird

Bitmap-Cache mit LRU-Cache

LRU-Cache

Der folgende Beispielcode veranschaulicht eine mögliche Implementierung der LruCache-Klasse zum Zwischenspeichern von Bildern.

private LruCache<String, Bitmap> mMemoryCache;

Hier ist der String-Wert der Schlüssel für den Bitmap-Wert.

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

Zum Hinzufügen einer Bitmap zum Speichercache

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

Zum Abrufen einer Bitmap aus dem Cache-Speicher

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

Um Bitmap in imageview zu laden, verwenden Sie einfach getBitmapFromMemCache ("Pass key").



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow