В настоящее время я разрабатываю приложение для Android, которое извлекает изображения с использованием http-запросов. Было бы неплохо, если бы я мог кэшировать эти изображения, чтобы улучшить производительность и использование полосы пропускания.
Я столкнулся с классом CacheManager в справочнике по Android, но на самом деле я не знаю, как его использовать или что он действительно делает.
Я уже рассмотрел этот пример, но мне нужна помощь в его понимании:
/ ядро / Java / Android / WebKit / шестерни / ApacheHttpRequestAndroid.java
Кроме того, ссылка указывает:
«Сетевые запросы предоставляются этому компоненту, и, если они не могут быть разрешены кешем, заголовки HTTP соответствующим образом присоединяются к запросу на повторную проверку контента.»
Я не уверен, что это значит или как это будет работать для меня, так как getCacheFile в CacheManager принимает только строковый URL и карту, содержащую заголовки. Не уверен, что означает упомянутое вложение.
Объяснение или простой пример кода действительно помогли бы мне. Спасибо!
Обновление
Вот что у меня есть сейчас. Я явно делаю это неправильно, просто не знаю, где.
public static Bitmap getRemoteImage(String imageUrl) {
URL aURL = null;
URLConnection conn = null;
Bitmap bmp = null;
CacheResult cache_result = CacheManager.getCacheFile(imageUrl, new HashMap());
if (cache_result == null) {
try {
aURL = new URL(imageUrl);
conn = aURL.openConnection();
conn.connect();
InputStream is = conn.getInputStream();
cache_result = new CacheManager.CacheResult();
copyStream(is, cache_result.getOutputStream());
CacheManager.saveCacheFile(imageUrl, cache_result);
} catch (Exception e) {
return null;
}
}
bmp = BitmapFactory.decodeStream(cache_result.getInputStream());
return bmp;
}