Android
LruCache
Suche…
Bemerkungen
Sie sollten Lru Cache in Anwendungen verwenden, in denen sich wiederholendes Laden von Ressourcen das reibungslose App-Verhalten beeinträchtigen würde. Zum Beispiel eine Fotogalerie mit großen Thumbnails (128x128).
Seien Sie immer vorsichtig mit der Größe des Lru-Cache, da die App möglicherweise zu hoch eingestellt wird.
Nachdem der Lru-Cache nicht mehr nützlich ist, sollten Sie keine Verweise darauf speichern, damit der Garbage Collector ihn aus dem Speicher entfernen kann.
Um optimale Leistung zu erzielen, sollten Sie Ressourcen wie Bitmaps mit den bewährten Methoden laden, beispielsweise eine geeignete inSampleSize auswählen, bevor Sie sie dem Lru-Cache hinzufügen.
Cache initialisieren
Der Lru-Cache speichert alle hinzugefügten Ressourcen (Werte) für den schnellen Zugriff, bis ein Speicherlimit erreicht ist. In diesem Fall wird die weniger verwendete Ressource (Wert) zum Speichern der neuen gelöscht.
Um den Lru-Cache zu initialisieren, müssen Sie einen maximalen Speicherwert angeben. Dieser Wert hängt von Ihren Anwendungsanforderungen ab und davon, wie wichtig die Ressource ist, um eine reibungslose App-Nutzung zu gewährleisten. Ein empfohlener Wert für eine Bildergalerie wäre beispielsweise 1/8 Ihres maximal verfügbaren Speichers.
Beachten Sie auch, dass der Lru-Cache auf Schlüsselwertbasis arbeitet. Im folgenden Beispiel ist der Schlüssel ein String
und der Wert ist eine 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();
}
};
Hinzufügen einer Bitmap (Ressource) zum Cache
Um dem Cache eine Ressource hinzuzufügen, müssen Sie einen Schlüssel und die Ressource angeben. Stellen Sie zunächst sicher, dass sich der Wert nicht bereits im Cache befindet
public void addResourceToMemoryCache(String key, Bitmap resource) {
if (memoryCache.get(key) == null)
memoryCache.put(key, resource);
}
Bitmap (Resouce) aus dem Cache abrufen
Um eine Ressource aus dem Cache zu erhalten, übergeben Sie einfach den Schlüssel Ihrer Ressource (in diesem Beispiel String).
public Bitmap getResourceFromMemoryCache(String key) {
memoryCache.get(key);
}