2011-04-07 15 views
5

Así es como mi programa funciona:¿Mantiene Android las imágenes descargadas de HTTP en el caché?

1) muestre una imagen desde el servidor cambie

2) del usuario la imagen y subirlo al servidor

3) vista la lámina por volver a descargar desde el servidor

Esto es cómo consigo la imagen del servidor:

String src = "http://www.getyourpicture.com/mypicture.jpg" 
HttpGet httpRequest = new HttpGet(URI.create(src)); 
HttpClient httpclient = new DefaultHttpClient(); 
HttpResponse response = (HttpResponse)httpclient.execute(httpRequest); 
HttpEntity entity = response.getEntity(); 
BufferedHttpEntity bufHttpEntity = new BufferedHttpEntity(entity); 
InputStream instream = bufHttpEntity.getContent(); 

Bitmap dp = BitmapFactory.decodeStream(instream); 
//display dp from here... 

el problema aquí es cada vez que "vuelvo a descargar" la imagen, todavía muestra la imagen anterior. Para confirmar que he subido la imagen, he revisado la carpeta que contiene la imagen en el servidor e incluso he visitado el enlace en un navegador. Ambos enfoques muestran que la imagen ha sido cargada. Así que me he reducido a la posibilidad de que Android tenga un administrador de caché HTTP que no "refresque" el enlace de la imagen.

Entonces, si la respuesta a mi pregunta es "sí", ¿cómo puedo forzar a la aplicación a no usar el caché?

Si la respuesta es "no", ¿qué es lo que he pasado por alto?

Respuesta

5

No estoy seguro de que los undercovers funcionen y los valores predeterminados de caché de solicitud HTTP en Android, pero si es decente, entonces en teoría debería ser suficiente agregar una cadena de consulta con una marca de tiempo a la URL de solicitud para activar un nueva y completa solicitud HTTP.

String src = "http://www.getyourpicture.com/mypicture.jpg?" + System.currentTimeMillis(); 
Cuestiones relacionadas