Zoeken…


Invoering

Geheugenefficiënte bitmapcaching: dit is met name belangrijk als uw toepassing animaties gebruikt, omdat deze tijdens GC-opschoning worden gestopt en uw toepassing traag lijkt voor de gebruiker. Met een cache kunnen objecten worden gebruikt die duur zijn om te maken. Als u een object in het geheugen laadt, kunt u dit beschouwen als een cache voor het object. Werken met bitmap in Android is lastig. Het is belangrijker om de bimap in de cache te plaatsen als u deze herhaaldelijk gaat gebruiken.

Syntaxis

  • LruCache<String, Bitmap> mMemoryCache;//declaration of LruCache object.
  • void addBitmapToMemoryCache (String key, Bitmap bitmap) {} // verklaring van generieke methode die bitmap toevoegt aan cachegeheugen
  • Bitmap getBitmapFromMemCache (tekenreeks) {} // declaratie van generieke methode voor het verkrijgen van bimap uit cache.

parameters

Parameter Details
sleutel sleutel om bitmap in geheugencache op te slaan
bitmap bitmapwaarde die in het geheugen wordt opgeslagen

Bitmapcache met LRU-cache

LRU-cache

De volgende voorbeeldcode toont een mogelijke implementatie van de klasse LruCache voor het in de cache opslaan van afbeeldingen.

private LruCache<String, Bitmap> mMemoryCache;

Hier is tekenreekswaarde de sleutel voor bitmapwaarde.

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

Voor het toevoegen van bitmap aan de geheugencache

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

Voor bitmap ophalen uit geheugencache

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

Gebruik bitBitmapFromMemCache ("Pass-key") om bitmap in imageview te laden .



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow