サーチ…


前書き

メモリ効率的なビットマップキャッシング:これは、アプリケーションがアニメーションを使用して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