Android 如何从Kotlin中的Firebase存储实例更改maxUploadRetryTimeMillis?

Android 如何从Kotlin中的Firebase存储实例更改maxUploadRetryTimeMillis?,android,firebase,kotlin,firebase-storage,Android,Firebase,Kotlin,Firebase Storage,当我的Android设备没有任何网络连接时,我的FailureListener只会在10分钟后触发,就像我尝试将图片上传到Firebase存储时Firebase指定的那样 我想用maxUploadRetryTimeMillis属性将其更改为大约10s。但这并没有达到预期效果 到目前为止,我的简化代码: object StorageUtil { private val storageInstance: FirebaseStorage by lazy { FirebaseStorage.ge

当我的Android设备没有任何网络连接时,我的
FailureListener
只会在10分钟后触发,就像我尝试将图片上传到Firebase存储时Firebase指定的那样

我想用
maxUploadRetryTimeMillis
属性将其更改为大约10s。但这并没有达到预期效果

到目前为止,我的简化代码:

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()
}
这是行不通的。它仅在10分钟后触发故障监听器


希望我能得到你的帮助。提前谢谢

无法使用SDK配置任何超时。原因是,当网络连接出现问题时,SDK将以静默方式持续重试并恢复上载。这是一个非常好的移动应用程序功能


如果在一段时间后需要继续做其他工作,则需要设置自己的计时器,并在指定的超时时间触发。然后,您可以取消上载并执行恢复所需的任何操作。

我发现您也更改了
maxDownloadRetryTimeMills


尤其是当设备在上传开始时已经离线时。因为它会尝试获取一个上传URL,该URL显然被视为下载。

我的计划是通过这种方式检查上传是否可能,主要是因为网络超时。如果没有,我会将我的状态保存到本地数据库,并在连接再次可用时尽快重试上载。我在这里引用了我的想法:这里:是的,你们肯定应该拯救这个州。目前还不知道需要多长时间,也不知道最终是否会成功。但是如果使用
SessionURI
保存状态,则只有在我的上传最初以网络连接开始时(请参见此处:)才可能,如果我从安卓系统检查网络连接,我只检查网络,而不检查Firebase服务是否可用。我该怎么做?事情不是这样的。您只需开始上传,并假设它最终会在连接时工作。你不能“检查连接”,因为这仍然不能保证应用程序永远无法连接,或者需要多长时间,或者如果你现在开始上传,它是否能够完成。为什么这么多线程只是建议在开始任何网络任务之前,用ping电话测试互联网连接,比如google.com?这是坏习惯吗?我想如果我能在合理的响应时间内ping google.com,我也应该能够上传一个