Я пытаюсь отобразить список с большим количеством (удаленных) изображений. Я пытаюсь использовать залп для задания.Захват волейбола и растрового изображения
Волейбол несколько работает, но недостаточно. В ImageLoader.get залпа имеет следующий фрагмент кода:
final String cacheKey = getCacheKey(requestUrl, maxWidth, maxHeight);
// Try to look up the request in the cache of remote images.
Bitmap cachedBitmap = mCache.getBitmap(cacheKey);
if (cachedBitmap != null) {
// Return the cached bitmap.
ImageContainer container = new ImageContainer(cachedBitmap, requestUrl, null, null);
imageListener.onResponse(container, true);
return container;
}
Однако getCacheKey производит ключ, как это:
/**
* Creates a cache key for use with the L1 cache.
* @param url The URL of the request.
* @param maxWidth The max-width of the output.
* @param maxHeight The max-height of the output.
*/
private static String getCacheKey(String url, int maxWidth, int maxHeight) {
return new StringBuilder(url.length() + 12).append("#W").append(maxWidth)
.append("#H").append(maxHeight).append(url).toString();
}
т.е. он добавляет некоторые «метаданные», как ширина и высота до ключа.
Этот ключ никогда не производит удар, и если изображение не находится в кеше L1, оно извлекается онлайн. Когда изображение загружается онлайн, оно сохраняется в кэш-памяти диска, но волейбол сохраняет его с URL-адресом (и только URL-адресом) в качестве ключа.
Ожидается ли такое поведение? Я что-то упускаю?
это может зависеть от заголовков от вашего ответа – njzk2
вы поняли, почему залп не производит удар? – iamrelos
Вы можете использовать [droidQuery] (http://bit.ly/droidquery) для завершения async restful запросов (Ajax) и упростить управление кэшированием (независимо от того, хотите ли вы сохранить кешированный объект или нет). – Phil