Android
ビットマップキャッシュ
サーチ…
前書き
メモリ効率的なビットマップキャッシング:これは、アプリケーションがアニメーションを使用してGCクリーンアップ中に停止され、アプリケーションがユーザーにとって鈍いように見える場合に特に重要です。キャッシュは、高価なオブジェクトを再利用することを可能にする。オブジェクトをメモリにロードする場合、これをオブジェクトのキャッシュと考えることができます。アンドロイドでビットマップを操作するのは難しいです。繰り返し使用する場合は、bimapをキャッシュする方が重要です。
構文
-
LruCache<String, Bitmap> mMemoryCache;//declaration of LruCache object.
- void addBitmapToMemoryCache(String key、Bitmap bitmap){} //ビットマップをキャッシュメモリに追加する汎用メソッドの宣言
- ビットマップgetBitmapFromMemCache(String key){} //キャッシュからbimapを取得する汎用メソッドの宣言。
パラメーター
パラメータ | 詳細 |
---|---|
キー | メモリキャッシュにビットマップを格納するためのキー |
ビットマップ | メモリにキャッシュされるビットマップ値 |
LRUキャッシュを使用したビットマップキャッシュ
LRUキャッシュ
次のコード例は、画像をキャッシュするためのLruCacheクラスの実装を示しています。
private LruCache<String, Bitmap> mMemoryCache;
ここで、文字列値はビットマップ値のキーです。
// Get max available VM memory, exceeding this amount will throw an
// OutOfMemory exception. Stored in kilobytes as LruCache takes an
// int in its constructor.
final int maxMemory = (int) (Runtime.getRuntime().maxMemory() / 1024);
// Use 1/8th of the available memory for this memory cache.
final int cacheSize = maxMemory / 8;
mMemoryCache = new LruCache<String, Bitmap>(cacheSize) {
@Override
protected int sizeOf(String key, Bitmap bitmap) {
// The cache size will be measured in kilobytes rather than
// number of items.
return bitmap.getByteCount() / 1024;
}
};
ビットマップをメモリキャッシュに追加する場合
public void addBitmapToMemoryCache(String key, Bitmap bitmap) {
if (getBitmapFromMemCache(key) == null) {
mMemoryCache.put(key, bitmap);
}
}
メモリキャッシュからビットマップを取得する
public Bitmap getBitmapFromMemCache(String key) {
return mMemoryCache.get(key);
}
ビットマップをイメージビューにロードするには、 単にgetBitmapFromMemCache( "パスキー")を使用します。
Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow