Sök…


Anmärkningar

Du bör använda Lru Cache i applikationer där repetitiva resursbelastningar skulle påverka ett smidigt appbeteende. Till exempel ett fotogalleri med stora miniatyrbilder (128x128).

Var alltid försiktig med storleken på Lru-cachen eftersom inställning av den för högt kan påverka appen.

Efter att Lru-cachen inte längre är användbar, undvik att hålla några referenser till den för att tillåta sopor att rensa upp det från minnet.

För bästa prestanda, kom ihåg att ladda resurser som bitmappar med hjälp av bästa praxis som att välja rätt inSampleSize innan du lägger till det i Lru-cachen.

Initierar cachen

Lru-cachen lagrar alla tillagda resurser (värden) för snabb åtkomst tills den når en minnesgräns, i vilket fall kommer den att släppa den mindre använda resursen (värdet) för att lagra den nya.

För att initiera Lru-cachen måste du ange ett maximalt minnesvärde. Detta värde beror på dina applikationskrav och hur kritisk resursen är för att hålla en smidig appanvändning. Ett rekommenderat värde för ett bildgalleri, till exempel, skulle vara 1/8 av ditt maximalt tillgängliga minne.

Observera också att Lru-cachen fungerar på nyckelvärden. I följande exempel är nyckeln en String och värdet är en 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();
    }
};

Lägga till en bitmapp (resurs) i cachen

För att lägga till en resurs i cachen måste du ange en nyckel och resursen. Kontrollera först att värdet inte redan finns i cachen

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

Hämta en bitmapp (resouce) från cachen

För att få en resurs från cachen passerar du bara resursnyckeln (Sträng i det här exemplet)

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


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