[英]How to resume a file download in firebase Storage?
我需要使用firebase存储下载一个大文件,我的用户可能通过下载面临网络中断,我希望能够恢复此下载任务。
FileDownloadTask downloadTask = firebaseStorage.getReferenceFromUrl(url).getFile(localFile);
downloadTask.addOnProgressListener(new OnProgressListener<FileDownloadTask.TaskSnapshot>() {
@Override
public void onProgress(FileDownloadTask.TaskSnapshot taskSnapshot) {
Log.v(TAG, "progress" + taskSnapshot.getBytesTransferred());;
}
});
downloadTask.addOnFailureListener(e -> {
CustomLogger.v(TAG, "downloadTask, on Failed: " + courseId);
deleteFilesAfterError(courseId);
});
downloadTask.addOnPausedListener(taskSnapshot
-> CustomLogger.v(TAG, "downloadTask, on paused: " + courseId));
永远不会调用最后两个听众。 当我设置完整的监听器时:
downloadTask.addOnCompleteListener()
我的应用程序崩溃了。
即使我设置:
firebaseStorage.setMaxDownloadRetryTimeMillis(2000);
然后在下载过程中关闭我的网络,不会触发downloadTask fail listener。 该任务似乎仍在“进行中”,但没有下载任何数据。 该功能的文档很差。 我应该怎么实施呢?
关于如何处理文件下载的简历功能的任何想法?
当您说在下载过程中关闭网络时,您是如何做到这一点的?
我问的原因是,如果您暂时离开活动以关闭网络流,那么您的问题可能是活动生命周期问题。
如果你离开活动而不在onPause()
, onStop()
等处理这个问题,那么你可能会遇到这种行为。
除此之外,你的代码看起来类似于文档(和我的代码工作正常),除了你没有'链'你的方法来添加监听器(应该不是一个问题)。
但是,您复制并粘贴到此处的代码部分折叠,并且不显示您是否覆盖了onFailure(Exception e)
方法,但我认为它是折叠在该箭头中的。
如果您仍在处理此问题,是否可以针对崩溃时收到的任何错误发布跟踪?
这是一个在网络故障期间工作的代码块,仅供参考:
FirebaseStorage storage = FirebaseStorage.getInstance();
StorageReference storageReference = storage.getReferenceFromUrl("gs://your-bucket/");
storageReference.getFile(localFile).addOnSuccessListener(YourActivity.this, new OnSuccessListener<FileDownloadTask.TaskSnapshot>() {
@Override
public void onSuccess(FileDownloadTask.TaskSnapshot taskSnapshot) {
}
}
}).addOnFailureListener(YourActivity.this, new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception exception) {
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.