Android
LruCache
サーチ…
備考
繰り返しのリソース負荷がスムーズなアプリケーションの動作に影響するアプリケーションでは、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