В настоящее время я разрабатываю приложение для 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; }