¿Cómo usar CacheManager de Android?
Actualmente estoy desarrollando una aplicación de Android que recolecta imágenes usando solicitudes http. Sería bastante oleaje si pudiera almacenar en caché esas imágenes para mejorar al funcionamiento y al uso del ancho de banda.
Me encontré con la clase CacheManager en la referencia de Android, pero realmente no sé cómo usarlo, o lo que realmente hace.
- Cómo utilizar DefaultHttpClient en Android?
- Symfony2 http, funciona con curl pero no en Android
- Android Leer el contenido de una URL (contenido que falta después del resultado)
- Solicitud HTTP para archivo XML
- Envío de la solicitud DELETE HTTP en Android
Ya he explorado este ejemplo, pero necesito ayuda para entenderlo:
/core/java/android/webkit/gears/ApacheHttpRequestAndroid.java
Asimismo, la referencia establece:
"Las solicitudes de red se proporcionan a este componente y si no pueden ser resueltas por el caché, los encabezados HTTP se adjuntan, según corresponda, a la solicitud de revalidación de contenido".
No estoy seguro de lo que esto significa o cómo funcionaría para mí, ya que CacheManager getCacheFile acepta sólo una URL de cadena y un mapa que contiene los encabezados. No estoy seguro de lo que el anexo mencionado significa.
Una explicación o un simple ejemplo de código realmente haría mi día. ¡Gracias!
Actualizar
Esto es lo que tengo ahora mismo. Estoy claramente haciendo mal, simplemente no sé dónde.
Public static Bitmap getRemoteImage (String imageUrl) { URL aURL = null; URLConnection conn = nulo; Mapa de bits bmp = nulo; CacheResult cache_result = CacheManager.getCacheFile (imageUrl, nuevo HashMap ()); If (cache_result == null) { tratar { AURL = nueva URL (imageUrl); Conn = aURL.openConnection (); Conn.connect (); InputStream es = conn.getInputStream (); Cache_result = new CacheManager.CacheResult (); CopyStream (es, cache_result.getOutputStream ()); CacheManager.saveCacheFile (imageUrl, cache_result); } Catch (Excepción e) { Return null; } } Bmp = BitmapFactory.decodeStream (cache_result.getInputStream ()); Return bmp; }
- Cómo enviar una solicitud referer en una url para un webView
- Realizar una solicitud HTTP con android
- No autorizado al llamar a Google GCM
- Transmisión de datos JSON en solicitud de obtención como cuerpo de solicitud
No creo que el CacheManger se pueda utilizar fuera de un WebView como se indica en este informe de fallo http://code.google.com/p/android/issues/detail?id=7222
Me encontré con este problema hace un tiempo también. El gestor de caché es sólo para la webview y no es realmente útil fuera de eso. Para mi aplicación que necesitaba para almacenar en caché respuestas xml y las imágenes por lo que terminé escribiendo mi propio gestor de caché para lograr eso. Nada demasiado terrible, pero ciertamente no es tan fácil como usar una incorporada.
Si tiene alguna pregunta sobre los detalles, agregue un comentario a mi mensaje, lo reviso con frecuencia.