Korrekter Abbruch eines laufenden Downloads

U

Unicate

Erfahrenes Mitglied
57
Hallo alle zusammen!

Ich habe eine App die mir eine Reihe von Bildern in einer Gallery anzeigt.
Die Bilder werden heruntergeladen, wenn sie benötigt werden. Dazu wollte ich eine art "sliding-window" Technik implementieren, was soweit auch schon ganz gut funktioniert. Was heisst das?

Wenn die Gallery gestartet wird, werden 3 Bilder geladen (prev,current,next) wenn der Benutzer nun weiter flingt, wird das nächste geladen usw. Alle Downloads werden nacheinander in EINEM Thread heruntergeladen. Es gibt in meinem Thread also eine Liste mit downloads die der thread abarbeiten soll. Wenn Der Benutzer nun mehrfach in eine Richtung flingt, dann sollen:

  • der aktuelle Download abgebrochen werden
  • die ältesten Downloads aus der Liste geworfen werden
Letzteres funktioniert ganz hervorragend. Nun passiert folgendes:


Um den Download eines Bildes abzubrechen, schließe ich den InputStream und danach den Outputstream um die Übertragung zustoppen. Hier tritt dieser Fehler auf:
Code:
java.io.IOException: close failed: EIO (I/O error)
    at libcore.io.IoUtils.close(IoUtils.java:41)
    at java.io.FileOutputStream.close(FileOutputStream.java:139)
    at java.io.FileOutputStream.finalize(FileOutputStream.java:153)
    at java.lang.Daemons$FinalizerDaemon.doFinalize(Daemons.java:182)
    at java.lang.Daemons$FinalizerDaemon.run(Daemons.java:168)
    at java.lang.Thread.run(Thread.java:856)
Caused by: libcore.io.ErrnoException: close failed: EIO (I/O error)
    at libcore.io.Posix.close(Native Method)
    at libcore.io.BlockGuardOs.close(BlockGuardOs.java:75)
    at libcore.io.IoUtils.close(IoUtils.java:38)
Ich weiß zwar nicht ob diese Exception mein Problem auslößt, aber ich weiß auch nicht wie ich das unterbinden kann. Dann versuche ich das nicht vollständige File zu löschen.
Das Bild wo der Download abgebrochen wurde, wird auch gelöscht (file.delete() gibt true zurück)


Problem ist nun, das wenn ich wieder zurück-flinge ab und zu ein Bild nicht mit angezeigt wird. Ich hatte die Vermutung, dass das File nicht richtig gelöscht wird und das es deswegen beim neu beschreiben zu einem Problem kommt. Doch nachdem ich file.delete() auf Richtigkeit geprüft hatte konnte ich das auch ausschließen.


Nun meine Frage:


Mach ich das richtig?
Gibt es vielleicht eine "bessere" Möglichkeit einen laufenden Download abzubrechen?
 

Ähnliche Themen

D
  • Data2006
3 4 5
Antworten
84
Aufrufe
3.711
jogimuc
J
F
Antworten
0
Aufrufe
837
FlorianAlfredo
F
D
  • Data2006
Antworten
14
Aufrufe
487
jogimuc
J
Zurück
Oben Unten