Я могу быть просто смущен тем, как LruCache
должен работать, но разве он не позволяет получить доступ к объектам из одного экземпляра, которые были сохранены в другом экземпляре?Конечно, это не тот случай, в противном случае он как бы лишается цели иметь кеш.
Пример:
class CacheInterface {
private val lruCache: LruCache<String, Bitmap>
init {
val maxMemory = (Runtime.getRuntime().maxMemory() / 1024).toInt()
// Use 1/8th of the available memory for this memory cache.
val cacheSize = maxMemory / 8
lruCache = object : LruCache<String, Bitmap>(cacheSize) {
override fun sizeOf(key: String, value: Bitmap): Int {
return value.byteCount / 1024
}
}
}
fun getBitmap(key: String): Bitmap? {
return lruCache.get(key)
}
fun storeBitmap(key: String, bitmap: Bitmap) {
lruCache.put(key, bitmap)
Utils.log(lruCache.get(key))
}
}
val bitmap = getBitmal()
val instance1 = CacheInterface()
instance1.storeBitmap("key1", bitmap)
log(instance1.getBitmap("key1")) //android.graphics.Bitmap@6854e91
log(CacheInterface().getBitmap("key1")) //null
Насколько я понимаю, кеш хранится до тех пор, пока не будет удаленпользователь (вручную или удаление приложения), или очищается системой, когда он превышает допустимое пространство.Чего мне не хватает?