2016-05-28 13 views
1

Ich versuche, einige Dateien aus dem Firebase-Speicher herunterzuladen. Es funktioniert gut, wenn eine stabile Internetverbindung besteht. Wenn die Internetverbindung während des Herunterladens des Inhalts verloren geht, wird nur versucht, den Inhalt herunterzuladen. Wie erkennt man, wenn kein Inhalt heruntergeladen wird?Firebase-Speicher, der Netzwerkunterbrechungen bei laufendem Download behandelt

Ich habe die onProgessListener von StorageReference implementiert. Ich bin mir jedoch nicht sicher, wie ich davon Gebrauch machen kann, um festzustellen, ob es einen Fortschritt beim Download gibt.

Antwort

2

Uploads, Downloads und andere Vorgänge sollen automatisch versuchen, Sie vor temporären Unterbrechungen zu schützen. Es gibt ein konfigurierbares Zeitlimit, das die Operation beendet (fehlschlägt), wenn es in dieser Zeit kein Paket übertragen kann. Sie können diese Einstellung mit:

//if we get interrupted for more than 2 seconds, fail the operation. 
FirebaseStorage.getInstance().setMaxUploadRetryTimeMillis(2000); 

Es gibt verschiedene Timeouts für Uploads, Downloads und andere Operationen.

Mit Uploads können Sie versuchen, den Upload von der Stelle fortzusetzen, an der Sie aufgehört haben (wenn Ihre Quelle eine Datei war), selbst wenn sie unterbrochen wurde. Um dies zu tun, müssen Sie die "Upload-Sitzung uri" von der Upload-Aufgabe erhalten.

task.addOnFailureListener(new OnFailureListener { 
    @Override 
    public void OnFailure(Exception error) { 
    Uri uploadsession = task.getSnapshot().getUploadSessionUri(); 
    //if you want to retry later, feed this uri as the last parameter 
    // to putFile(uri, metadata, uri) 
    } 
} 
+0

Die Standard-Timeouts sind 10 Minuten für den Upload/Download und 2 Minuten für andere Operationen (zB getDownloadUrl) –

+1

Für alle, die im Jahr 2017 auf diese stolpern, die für mich gearbeitet folgende: myRef.storage.maxDownloadRetryTime = 2 – taykay08