/*
* Copyright (c) 2015-present, Facebook, Inc.
* All rights reserved.
*
* This source code is licensed under the BSD-style license found in the
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*/
package com.facebook.imagepipeline.cache;
import com.facebook.common.internal.Supplier;
import com.facebook.common.memory.MemoryTrimmableRegistry;
import com.facebook.imagepipeline.image.CloseableImage;
public class BitmapCountingMemoryCacheFactory {
public static CountingMemoryCache<BitmapMemoryCacheKey, CloseableImage, Void> get(
Supplier<MemoryCacheParams> bitmapMemoryCacheParamsSupplier,
MemoryTrimmableRegistry memoryTrimmableRegistry) {
MemoryCacheIndex<BitmapMemoryCacheKey, CloseableImage, Void> memoryCacheIndex =
new SimpleMemoryCacheIndex<BitmapMemoryCacheKey, CloseableImage>();
CountingMemoryCache.ValueInfoCallback<CloseableImage> valueTypeDescriptor =
new CountingMemoryCache.ValueInfoCallback<CloseableImage>() {
@Override
public long getSizeInBytes(CloseableImage value) {
return value.getSizeInBytes();
}
};
CountingMemoryCache.CacheTrimStrategy trimStrategy = new BitmapMemoryCacheTrimStrategy();
CountingMemoryCache<BitmapMemoryCacheKey, CloseableImage, Void> countingCache =
new CountingMemoryCache<BitmapMemoryCacheKey, CloseableImage, Void>(
memoryCacheIndex,
valueTypeDescriptor,
trimStrategy,
bitmapMemoryCacheParamsSupplier);
memoryTrimmableRegistry.registerMemoryTrimmable(countingCache);
return countingCache;
}
}