0
你好,我有使用番石榴在Android上的图像如何使用改变番石榴缓存驱逐策略秤
这个简单的MEM缓存memCache = CacheBuilder.newBuilder()
.maximumWeight(Runtime.getRuntime().maxMemory()/MEMORY_POOL)
.weigher(new Weigher<String, Bitmap>() {
@SuppressLint("NewApi")
public int weigh(String url, Bitmap bitmap) {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB_MR1) {
return bitmap.getRowBytes() * bitmap.getHeight();
} else {
return bitmap.getByteCount();
}
}
})
.removalListener(new RemovalListener<String, Bitmap>() {
@Override
public void onRemoval(RemovalNotification<String, Bitmap> objectObjectRemovalNotification) {
final Bitmap bitmap = objectObjectRemovalNotification.getValue();
if (bitmap != null && !bitmap.isRecycled()) {
Log.debug("Cache: recycling bitmap");
bitmap.recycle();
}
}
})
.build();
当项目是从缓存中删除,它删除了未使用的时间最长的项目第一。我想改变这一点,这是删除最重的第一项。可能吗 ?
['CacheBuilder' javadoc](http://docs.guava-libraries.googlecode.com/git/javadoc/index.html?com/google/common/cache/CacheBuilder.html)确实规定驱逐当达到最大尺寸(或重量)时是基于LRU的。它还表示(对于'maximumWeight()')_“请注意,权重仅用于确定缓存是否超出容量;对选择下一个应该被逐出的条目没有影响。 –