Я использую Guava в своем приложении для Android для загрузки изображений и кэширования их имен файлов.
Вот мой кеш:
private static final LoadingCache<String, String> imageCache = CacheBuilder.newBuilder()
.softValues()
.initialCapacity(3000)
.maximumSize(3000)
.concurrencyLevel(12)
.expireAfterAccess(IMAGE_EXPIRATION_TIMEOUT, TimeUnit.SECONDS)
.build(new CacheLoader<String, String>() {
@Override
public String load(String key) throws Exception {
Log.d(TAG, "load " + key);
Bitmap bitmap = null;
final File imageFile = new File(cacheDir, "http---com-jWs-jpg");
return imageFile.getPath();
}
});
И используя:
String filename = imageCache.get(imageUrl);
Log.e(TAG, ">>> i:cache size :"+ imageCache.size() +":"+ imageCache.stats() +":"+ imageCache.asMap());
return Drawable.createFromPath(filename);
Моя проблема: в моем списке 12 уникальных URL, но у меня слишком большое количество пропусков:
i:cache size :6:CacheStats{hitCount=36, missCount=48, loadSuccessCount=48, loadExceptionCount=0, totalLoadTime=46569827...)
Когда я возвращаю простую строку (например, путь к файлу или просто пустую строку), у меня есть только 12 промахов, а другие get
являются попаданиями. Что я делаю не так?