Как изменить maxUploadRetryTimeMillis из экземпляра хранилища Firebase в Котлине? - PullRequest
0 голосов
/ 03 июня 2019

Когда мое устройство Android не подключено к сети, мои FailureListener запускаются только через 10 минут, как указано Firebase, когда я пытаюсь загрузить изображение в свое хранилище Firebase.

Я бы хотел изменить это значение до 10 с помощью свойства maxUploadRetryTimeMillis. Но это не работает так, как задумано.

Мой упрощенный код:

object StorageUtil {
    private val storageInstance: FirebaseStorage by lazy { FirebaseStorage.getInstance() }

    private val currentUserRef: StorageReference
        get() = storageInstance.reference
            .child(FirebaseAuth.getInstance().uid ?: throw NullPointerException("UID is null."))

    fun uploadPicture(imageBytes: ByteArray,
                      onSuccess: (imagePath: String) -> Unit) {
        storageInstance.maxUploadRetryTimeMillis = 10000
        val ref = currentUserRef.child("pictures/${UUID.nameUUIDFromBytes(imageBytes)}")

        val uploadTask = ref.putBytes(imageBytes)

        uploadTask.addOnFailureListener {
            Log.i("Upload Failed", "This message never shows up")
        }
    }

uploadPicture() вызывается так:

StorageUtil.uploadPicture(picture) { url ->
                    moment.phtotoPaths.add(url)
                    renderImages()
}

Это не работает. FailureListener срабатывает только через 10 минут.

Надеюсь, я получу некоторую помощь от вас. Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 05 июня 2019

Я узнал, что у вас тоже есть maxDownloadRetryTimeMills.

Особенно, если устройство находится в автономном режиме уже в начале загрузки. Потому что тогда он пытается получить URL для загрузки, который, очевидно, считается загрузкой.

0 голосов
/ 03 июня 2019

Нет способа настроить любое время ожидания с помощью SDK.Причина в том, что SDK будет молча и постоянно повторять и возобновлять загрузку при плохом сетевом соединении.Это очень хорошая функция для мобильных приложений.

Если вам нужно перейти к другой работе через некоторое время, вам нужно установить собственный таймер и активировать указанное вами время ожидания.Затем вы можете отменить загрузку и сделать все необходимое для восстановления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...