【发布时间】:2016-11-02 10:05:36
【问题描述】:
我需要使用 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 失败监听器不会触发。该任务似乎仍在“进行中”,但没有下载数据。该功能的文档很差。我应该如何实现它?
- 失败的监听器似乎坏了
- 当我添加一个 completeListener 时,我的应用程序崩溃了
- firebaseStorage.setMaxDownloadRetryTimeMillis 好像没有 任何效果
知道如何处理文件下载的恢复功能吗?
【问题讨论】:
标签: android firebase firebase-storage