Сохраняет ли Android изображения, загруженные с HTTP, в кэш? - PullRequest
5 голосов
/ 07 апреля 2011

Вот как работает моя программа:

1) Отображение картинки с сервера

2) Пользователь меняет изображение и загружает его на сервер

3) Отображение картинки путем повторной загрузки с сервера

Вот так я получаю картинку с сервера:

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...

Проблема в том, что всякий раз, когда я «перезагружаю» изображение, оно все равно показывает старую картинку. Чтобы подтвердить, что я загрузил изображение, я проверил папку, содержащую изображение на сервере, и даже посетил ссылку в браузере. Оба подхода показывают, что картина действительно была загружена. Поэтому я сузился до того, что в Android может быть менеджер кэширования http, который не «обновляет» ссылку на изображение.

Итак, если ответ на мой вопрос "да", как я могу заставить приложение не использовать кеш?

Если ответ «нет», что я упустил из виду?

1 Ответ

5 голосов
/ 07 апреля 2011

Я не уверен в том, что работают недопоставки и значения по умолчанию для кэширования HTTP-запросов на Android, но если он приемлем, то теоретически должно быть достаточно добавить строку запроса с меткой времени в URL запроса, чтобы вызвать бренд новый и полноценный HTTP-запрос.

String src = "http://www.getyourpicture.com/mypicture.jpg?" + System.currentTimeMillis();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...