1. Hast Du Lust, bei uns mitzuarbeiten und das AH-Team zu verstärken? Alle Details zu dieser aktuellen Herausforderung findest Du hier.
  1. Unicate, 06.06.2012 #1
    Unicate

    Unicate Threadstarter Android-Experte

    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?
     
Die Seite wird geladen...
Ähnliche Themen Forum Datum
[ERLEDIGT] Widget reagiert nicht auf Click mit anschliessendem Http-Request Android App Entwicklung 04.07.2017
AsyncTasks: "FTP Download" / "FTP liste Daten in Verzeichnis" Probleme Android App Entwicklung 16.01.2017
Du betrachtest das Thema "Korrekter Abbruch eines laufenden Downloads" im Forum "Android App Entwicklung",