У меня есть запрос, не относящийся к UniversalImageLoader, но потому что я пытаюсь использовать поток контента для загрузки изображения, с которым сталкивается следующая проблема.Java InputSream hascode отличается каждый раз, даже когда запрос одинаковый.
Я использую поток ввода «stream: //», чтобы использовать ImageLoader. Все работает отлично, за исключением того, что хэш-код входного потока для одного и того же запроса генерируется по-разному и, следовательно, заставляет imageloader загружать изображение снова из сети, а не из диска.
Что мне делать, чтобы исправить это.
PS: Я пытался следовать ответ от here
код, чтобы получить InputStream есть (UtilityMethod будет отметить только задачу асинхронной):
public void displayContentImage(final String fileId, final ImageView imageView) {
UtilityMethods.startMyTask(new AsyncTask<Object, Void, InputStream>() {
@Override
protected InputStream doInBackground(Object... params) {
CMServiceGateway cmServiceGateway = new CMServiceGateway();
final InputStream inputStream = cmServiceGateway.GetContentAsStream(fileId);
if (inputStream != null) {
//String imageId = "stream://" + inputStream.hashCode();
//Log.d("ImageId :: 1 ::", "file id : " + fileId + "hashcode: " + imageId);
//String imageId2 = "stream://" + cmServiceGateway.GetContentAsStream(fileId).hashCode();
//Log.d("ImageId :: 2 ::", "file id : " + fileId + "hashcode: " + imageId2);
return inputStream;
}
return null;
}
@Override
protected void onPostExecute(InputStream inputStream) {
if (inputStream != null) {
displayImage(inputStream, imageView);
}
}
});
}
Можете ли вы показать, как вы получаете поток изображений? Откуда? – NOSTRA
Вы открываете потоки и сравниваете их hashValue, насколько я вижу. IDK - контракт на потоковые хэши, но для обычных объектов это просто их адрес. Новый поток = новый объект = новый адрес. Вы не можете сравнить их с hashCode, если моя теория верна. Вы должны написать свой собственный метод сравнения или отправить md5 изображения вперед, чтобы вы могли сравнить md5 сетевого изображения с локальной копией md5. – HopefullyHelpful
@HopefullyHelpful спасибо за ваши комментарии, это может быть правдой для двух разных объектов. Но если вы заметили, что объект inputStream в Log.d одинаковый. Это похоже на вызов двух идентификаторов одного и того же объекта один за другим, и вы получаете два разных ответа. Я не уверен, работает ли хэш-код. – Sudhir