Android
Bitmapcache
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 .