Firebase 存储'getBytes'没有取消方法



我正在使用"getBytes"从存储中下载json文件,但如果下载时间超过10秒,我想取消下载。方法"getBytes"返回一个没有cancel方法的"Task"类型,而"getFile"返回的"FileDownloadTask"确实有cancel方法。那么,有没有一种方法可以使用"getBytes"取消下载,我可以将"Task"转换为"FileDownloadTask"吗?

编辑:这是我的代码:

mainStorageRef.child(UNIVERSITIES_DATA_STORAGE_PATH).getBytes(Long.MAX_VALUE).addOnSuccessListener(new OnSuccessListener<byte[]>() {
@Override
public void onSuccess(byte[] bytes) {
String jsonData = new String(bytes, StandardCharsets.UTF_8);
...
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
FastUtils.toastAndLogConnectionFailure(context, e);
}
});

此处的火焰发生器

就我从(闭源代码(实现中看到的,您从getBytes()返回的任务是而不是FileDownloadTask。相反,它是由TaskCompletionSource对象构造的直接Task<byte[]>。因此,它不能取消。

不过,你的请求似乎是合理的,所以我建议提交一份功能请求,让工程团队意识到这一点

目前,我建议使用getStream()方法,它为您提供了一个可以取消的StreamDownloadTask任务。然后,您可以将流内容读取到ByteArrayOutputStream中,这与getBytes方法在内部所做的差不多。

最新更新