2017-02-27 49 views
10

我有從Firebase存儲下載文件的基本工作代碼。如何縮短網絡錯誤的Firebase存儲下載重試時間

String key = "gs://.../test.jpg"; 
File file = new File(getCacheDir() + File.separator + "test.jpg"); 

FirebaseStorage storage = FirebaseStorage.getInstance(); 
StorageReference gsRef = storage.getReferenceFromUrl(key); 

gsRef.getFile(file) 
.addOnSuccessListener(new OnSuccessListener<FileDownloadTask.TaskSnapshot>() 
{ 
    @Override 
    public void onSuccess(FileDownloadTask.TaskSnapshot taskSnapshot) 
    { 
     Log.d("APP", "onSuccess"); 
    } 
}).addOnFailureListener(new OnFailureListener() 
{ 
    @Override 
    public void onFailure(@NonNull Exception exception) 
    { 
     Log.d("APP", "onFailure: ", exception); 
    } 
}); 

然而,如果當設備沒有連接到因特網,執行上面的代碼需要將近10分鐘,然後最終觸發事件onFailure。與此同時日誌填滿反覆重試:

02-27 21:41:07.203 12954-13288/com.example.test E/StorageUtil: error getting token java.util.concurrent.ExecutionException: com.google.firebase.FirebaseException: An internal error has occurred. [ <<Network Error>> ] 
02-27 21:41:08.244 12954-13288/com.example.test W/ExponenentialBackoff: network unavailable, sleeping. 
02-27 21:41:08.294 12954-13288/com.example.test E/StorageUtil: error getting token java.util.concurrent.ExecutionException: com.google.firebase.FirebaseException: An internal error has occurred. [ <<Network Error>> ] 
02-27 21:41:09.405 12954-13288/com.example.test W/ExponenentialBackoff: network unavailable, sleeping. 
02-27 21:41:09.485 12954-13288/com.example.test E/StorageUtil: error getting token java.util.concurrent.ExecutionException: com.google.firebase.FirebaseException: An internal error has occurred. [ <<Network Error>> ] 

有沒有一種辦法可以縮短(定製)重試周期,觸發事件onFailure更快?

回答

7

是的,你可以使用setMaximum{OPERATION}RetryTimeMillis()方法配置上傳,下載等操作超時:

FirebaseStorage storage = FirebaseStorage.getInstance(); 
storage.setMaxDownloadRetryTimeMillis(60000); // wait 1 min for downloads 
storage.setMaxOperationRetryTimeMillis(10000); // wait 10s for normal ops 
storage.setMaxUploadRetryTimeMillis(120000); // wait 2 mins for uploads 

the reference docs for more

相關問題