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()')_「請注意,權重僅用於確定緩存是否超出容量;對選擇下一個應該被逐出的條目沒有影響。 –