Я просто пытаюсь кэшировать растровое изображение в LruCache HashMap
, выполняя это:
private lateinit var cacheStock: LruCache<String, Bitmap>
private lateinit var cacheStock: LruCache<String, Bitmap>
var maxCacheSize: Int = (Runtime.getRuntime().maxMemory() / 1024).toInt() / 8
//Default Max Cache Size
var maxCacheSize: Int = MemoryUtils().getVMCacheSize() / 8
cacheStock = object : LruCache<String, Bitmap>(maxCacheSize) {
override fun sizeOf(key: String?, value: Bitmap): Int {
//returns bytecount in a bitmap
return value.getByteCount() / 1024;
}
}
imageView.setImageResource(R.drawable.placeholder);
var bitmapdrawable:BitmapDrawable;
bitmapdrawable= imageView.drawable as BitmapDrawable;
cacheStock.put("11",bitmapdrawable.bitmap);
cacheStock.put("12",bitmapdrawable.bitmap);
cacheStock.put("13",bitmapdrawable.bitmap);
cacheStock.get("11");
cacheStock.get("12");
cacheStock.get("13");
Но cacheStock
не сохраняет в нем пары ключ-значение. Он всегда имеет размер 0 даже после добавления в него растрового изображения. Я также хочу знать, является ли LruCache
постоянной памятью? Пожалуйста, предложите, где я делаю ошибку.