0
안녕하세요 이미지무게를
안드로이드에 구아바를 사용하여이 간단한 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()에 대해서) _ "가중치는 캐시가 용량을 초과하는지 여부를 결정하는 데에만 사용되며, 다음에 제거해야하는 항목을 선택하는 데 영향을 미치지 않습니다." –