Как сократить время перезагрузки хранилища Firebase в Network Error

У меня есть базовый рабочий код для загрузки файла из хранилища 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 раньше?

Ответ 1

Да, вы можете настроить тайм-аут для загрузки, загрузки и других операций с помощью методов 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

Смотрите справочные документы для более,