Ich lade einen Anhang mithilfe der Java Mail-API herunter, und sobald sich der Netzwerkstatus ändert, bleibt meine App hängen und ich muss sie neu starten, es stürzt nicht einmal ab. Dies ist der Code-Schnipsel:InputStream - Umgang mit Netzwerkänderungen
InputStream is = bodyPart.getInputStream();
String fileName = MimeUtility.decodeText(bodyPart.getFileName());
// Downloading the file
File f = new File(Constants.getPath() + fileName);
try {
FileOutputStream fos;
fos = new FileOutputStream(f);
byte[] buf = new byte[8*1024];
int bytesRead;
while ((bytesRead = is.read(buf)) != -1) {
fos.write(buf, 0, bytesRead);
}
fos.close();
}
Was ist der beste Weg, um mit diesem Problem umgehen? Vielen Dank.
Versuchen Sie, den Eingabestream mit 'BufferedInputStream' zu umhüllen und sehen Sie, ob' skip() 'Methode hier unterstützt wird (löst IOException oder nicht). Wenn ja, hätten Sie die Möglichkeit, den vorherigen Download fortzusetzen. –
Hallo, danke, es wirft IOException. Würdest du mir bitte sagen, wie ich den vorherigen Download fortsetzen kann und wie hängt das mit der Tatsache zusammen, dass die App einfriert? – Tsikon
Wenn es 'skip()' unterstützt, würde es 'Vorheriges Herunterladen fortsetzen' unterstützen. Allerdings ist die einzige Option, die ich mir vorstellen kann, eine Zeitüberschreitung bei 'is.read()' zu haben, und sollte das Zeitlimit überschritten werden, sollten Sie den Download beenden und von vorn beginnen. Siehe diese Frage SO: http://stackoverflow.com/questions/804951/is-it-possible-to-read-from-a-inputstream-with-a-timeout –