尝试使用LruCache在内存中缓存某些对象。LruCache<Int, ISomeInterface)
这些对象来自不同的类,但已实现ISomeInterface
。
问题1:LruCache的价值部分是否可以与interface
一起使用?
问题2:如果在缓存中未找到键的值,LruCache中从数据库查询的最佳位置在哪里?
问题3: 如何确定缓存的大小?
在documentation "maxSize() : For caches that do not override sizeOf, this returns the maximum number of entries in the cache."
如果它确实覆盖了sizeOf()
,则maxSize
是什么意思?如果没有覆盖maxSize
,传入的sizeOf()
意味着什么-意味着如何以确定缓存的最大大小是千字节还是兆字节?
在这里如何覆盖sizeOf()
?,它仅知道对象已实现该接口(并且在kotlin中无法获取对象的大小)?
private lateinit var memoryCache: LruCache<Int, ISomeInterface>
fun cacheSetup() {
val maxMemory = (Runtime.getRuntime().maxMemory() / 1024).toInt()
// Use 1/8th of the available memory for this memory cache.
val cacheSize = maxMemory / 8
memoryCache = object : LruCache<Int, ISomeInterface>(cacheSize) {
override fun sizeOf(key: Int, obj: ISomeInterface): Int {
// The cache size will be measured in kilobytes rather than
// number of items.
return super.sizeOf(key, obj) //<=== what to do with it???
}
}
}