サーチ…


備考

繰り返しのリソース負荷がスムーズなアプリケーションの動作に影響するアプリケーションでは、Lru Cacheを使用する必要があります。たとえば、大きなサムネイル(128x128)のフォトギャラリーです。

それを高く設定するとアプリに影響する可能性があるので、Lruキャッシュのサイズには常に注意してください。

Lruキャッシュがもはや役に立たなくなった後、ガベージコレクタがメモリからそれをクリーンアップできるようにするために、それへの参照を保持しないようにしてください。

最高のパフォーマンスを得るには、適切なinSampleSizeを選択してLruキャッシュに追加するなどのベストプラクティスを使用して、ビットマップなどのリソースをロードすることを忘れないでください。

キャッシュの初期化

Larキャッシュは、メモリー制限に達するまで、高速アクセス用に追加されたすべてのリソース(値)を保管します。その場合、使用されていないリソース(値)をドロップして新しいリソースを保管します。

Lruキャッシュを初期化するには、最大メモリー値を指定する必要があります。この値はアプリケーションの要件と、スムーズなアプリの使用を維持するためのリソースの重要度によって異なります。たとえば、イメージギャラリの推奨値は、使用可能な最大メモリの1/8になります。

また、Lruキャッシュはキーバリューベースで動作することにも注意してください。次の例では、キーはStringあり、値は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();
    }
};

ビットマップ(リソース)をキャッシュに追加する

キャッシュにリソースを追加するには、キーとリソースを指定する必要があります。最初に値がキャッシュにないことを確認してください

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

キャッシュからビットマップ(リソース)を取得する

キャッシュからリソースを取得するには、リソースのキーを渡すだけです(この例ではString)

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


Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow