В настоящее время я разрабатываю приложение для Android, которое извлекает изображения с помощью HTTP-запросов. Было бы достаточно разбухать, если бы я мог кэшировать эти изображения, чтобы улучшить производительность и использование полосы пропускания.
Я столкнулся с классом CacheManager в ссылке на Android, но я действительно не знаю, как его использовать или что он на самом деле делает.
Я уже рассмотрел этот пример, но мне нужна помощь в этом:
/core/java/android/webkit/gears/ApacheHttpRequestAndroid.java
Кроме того, эталонное состояние:
"Сетевые запросы предоставляются этому компоненту, и если они не могут быть разрешены кэшем, HTTP-заголовки при необходимости присоединяются к запросу на повторную проверку содержимого."
Я не уверен, что это значит или как это будет работать для меня, поскольку CacheManager getCacheFile принимает только строковый URL-адрес и карту, содержащую заголовки. Не уверен, что означает упомянутое приложение.
Объяснение или простой пример кода действительно сделают мой день. Спасибо!
Update
Вот что я имею прямо сейчас. Я явно делаю это неправильно, просто не знаю, где.
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;
}