网络不可用时,Firebase存储下载文件不会失败

时间:2017-09-11 13:23:38

标签: android firebase firebase-storage

我正在使用以下代码从Firebase存储中下载文件:

[来源:https://firebase.google.com/docs/storage/android/download-files]

islandRef = storageRef.child("images/island.jpg");
File localFile = File.createTempFile("images", "jpg");
islandRef.getFile(localFile).addOnSuccessListener(new OnSuccessListener<FileDownloadTask.TaskSnapshot>() {
    @Override
    public void onSuccess(FileDownloadTask.TaskSnapshot taskSnapshot) {
        // Local temp file has been created
    }
    }).addOnFailureListener(new OnFailureListener() {
    @Override
    public void onFailure(@NonNull Exception exception) {
        // Handle any errors
    }
});

但是,我注意到Firebase在没有互联网的情况下会继续重试。

这就是为什么我也尝试过:

mStoragePath.setMaxDownloadRetryTimeMillis(60000);
mStoragePath.setMaxOperationRetryTimeMillis(60000);
mStoragePath.setMaxUploadRetryTimeMillis(60000);

但这只是设置最大超时值。是否有可能一次尝试失败

感谢。

1 个答案:

答案 0 :(得分:0)

这是按预期工作的:失败侦听器在任务失败时执行。目前没有连接这一事实并不是(立即)失败的原因,因为它可能只是网络故障,甚至是(不太可能)谷歌云存储中的短暂中断。

如果要显式,在没有网络连接时立即失败,则必须在代码中明确检测到该条件。请参阅Android documentation on detecting network conditionthis answer

ConnectivityManager cm =
        (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);

NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
boolean isConnected = activeNetwork != null &&
                      activeNetwork.isConnectedOrConnecting();

但在上述情况下,您应该考虑此行为是否对您的用户最有帮助。