2

キーを使用してビットマップを取得しようとすると、ビットマップをキャッシュする次のコードがあります。それらは常に null を返します。私を助けてください 。ありがとうございました

 final int memClass = ((ActivityManager) mcontext.getSystemService(Context.ACTIVITY_SERVICE)).getMemoryClass();
    final int cacheSize =  1024 *  1024 *memClass ;
    Toast.makeText(mcontext,"Max Cache "+cacheSize,Toast.LENGTH_LONG).show();
    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) {
        Toast.makeText(mcontext,"CEO "+key+" - "+bitmap,Toast.LENGTH_LONG).show();
        mMemoryCache.put(key, bitmap);
    }
    else
    {
        Toast.makeText(mcontext,"NULL",Toast.LENGTH_LONG).show();
    }
}

public Bitmap getBitmapFromMemCache(String key) {
    return mMemoryCache.get(key);
}

- - - - - -アップデート - - - - - - - - - - - - - - - - - - - --- デバッグの結果、値が挿入されていることがわかりましたが、アプリを終了した後はアクセスできません。アプリを再起動しようとすると、キャッシュが失われます。その値を保持する方法を教えてください。ありがとうございました

4

1 に答える 1

1

私は間違っているかもしれませんが、私の理解では、キャッシュは RAM にデータを保持して CPU から電荷を取り除くように作られています。キャッシュは、アプリケーションの有効期間中に蓄積されます (同じ写真を複数回読み込むなど)。アプリケーションがダウンした後にキャッシュをクリアするのは正常な動作です。

于 2016-01-29T14:50:26.880 に答える