Zoeken…


Opmerkingen

U zou Lru Cache moeten gebruiken in applicaties waar repetitieve bronbelastingen een soepel app-gedrag zouden beïnvloeden. Bijvoorbeeld een fotogalerij met grote miniaturen (128x128).

Wees altijd voorzichtig met de grootte van de Lru-cache, omdat het te hoog instellen de app kan beïnvloeden.

Nadat de Lru-cache niet langer nuttig is, vermijd dan verwijzingen ernaar zodat de Garbage Collector het uit het geheugen kan opruimen.

Vergeet voor de beste prestaties niet om bronnen zoals bitmaps te laden met behulp van de beste werkwijzen, zoals het selecteren van een juiste inSampleSize voordat u deze toevoegt aan de Lru-cache.

De cache initialiseren

De Lru-cache slaat alle toegevoegde bronnen (waarden) op voor snelle toegang tot het een geheugenlimiet bereikt, in welk geval de minder gebruikte bron (waarde) wordt verwijderd om de nieuwe op te slaan.

Om de Lru-cache te initialiseren, moet u een maximale geheugenwaarde opgeven. Deze waarde is afhankelijk van uw applicatie-eisen en hoe kritisch de bron is om een soepel app-gebruik te behouden. Een aanbevolen waarde voor een afbeeldingengalerij is bijvoorbeeld 1/8 van uw maximaal beschikbare geheugen.

Merk ook op dat de Lru-cache werkt op basis van sleutel / waarde. In het volgende voorbeeld is de sleutel een String en is de waarde een Bitmap :

int maxMemory = (int) (Runtime.getRuntime().maxMemory() / 1024);
int cacheSize = maxMemory / 8;

LruCache<String, Bitmap> = memoryCache = new LruCache<String, Bitmap>(cacheSize) {
    protected int sizeOf(String key, Bitmap bitmap) {
        return bitmap.getByteCount();
    }
};

Een bitmap (bron) toevoegen aan de cache

Als u een bron aan de cache wilt toevoegen, moet u een sleutel en de bron opgeven. Zorg er eerst voor dat de waarde zich nog niet in de cache bevindt

public void addResourceToMemoryCache(String key, Bitmap resource) {
    if (memoryCache.get(key) == null)
        memoryCache.put(key, resource);
}

Een bitmap (Resouce) uit de cache halen

Om een bron uit de cache te halen, geeft u eenvoudig de sleutel van uw bron door (String in dit voorbeeld)

public Bitmap getResourceFromMemoryCache(String key) {
    memoryCache.get(key);
}


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