Ich habe eine Abfrage nicht speziell auf UniversalImageLoader, aber weil ich versuche, den Content-Stream zu verwenden, um das Bild zu laden, ich bin nach folgenden Problem konfrontiert.Java InputStream hascode ist jedes Mal anders, auch wenn die Anfrage gleich ist
Ich verwende den Eingabestream "stream: //", um ImageLoader verwenden zu können. Alles funktioniert gut, außer dass der Hashcode des Eingabestroms für die gleiche Anfrage anders erzeugt wird und zwingt den Imageloader daher, das Bild erneut von dem Netzwerk anstatt von der Platte herunterzuladen.
Was soll ich tun, um es zu beheben.
PS: Ich habe versucht, die Antwort von here
Der Code zu bekommen Input ist (Die UtilityMethod ist erwähnen gerade eine Asynchron-Task) zu folgen:
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);
}
}
});
}
Können Sie zeigen, wie Sie Ihren Image-Stream bekommen? Woher? – NOSTRA
Sie öffnen Streams und vergleichen ihren HashValue soweit ich sehen kann. IDK der Vertrag für Stream-Hashes, aber für normale Objekte ist es nur ihre Adresse. Neuer Stream = neues Objekt = neue Adresse. Sie können sie nicht mit hashCode vergleichen, wenn meine Theorie stimmt. Sie müssen Ihre eigene Vergleichsmethode schreiben oder eine md5 des Bildes im Voraus senden, so dass Sie die md5 des Netzwerkbildes mit der lokalen Kopie md5 vergleichen können. – HopefullyHelpful
@HopefullyHilfreiche Dank für Sie Kommentare das könnte für zwei verschiedene Objekte wahr sein. Wenn Sie jedoch feststellen, dass das inputStream-Objekt in Log.d identisch ist. Es ist so, als würde man zwei Hasencodes des gleichen Objekts nacheinander aufrufen und man erhält zwei verschiedene Antworten. Ich bin mir nicht wirklich sicher, ob Hashcode so funktioniert. – Sudhir