2017-02-27 5 views
10

Firebaseストレージからファイルをダウンロードするための基本的な作業コードがあります。デバイスがインターネットに接続されていないながら、上記のコードが実行される場合onFailureイベントが最後にトリガされる前に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分かかります。その間にログが繰り返し再試行でいっぱいされています

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()方法を使用してアップロード、ダウンロード、およびその他の操作のタイムアウトを設定することができます。the reference docs for moreを参照してください

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 

を、

関連する問題