2017-02-27 10 views
10

पर फायरबेस स्टोरेज डाउनलोड रीट्रीइंग अवधि को कैसे छोटा करें फ़ायरबेस भंडारण से फ़ाइल डाउनलोड करने के लिए मेरे पास मूल कार्य कोड है।नेटवर्क त्रुटि

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 देखें,

संबंधित मुद्दे