如何在firebase存储中恢复文件下载?

时间:2016-06-30 10:49:12

标签: android firebase 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不会触发。该任务似乎仍在“进行中”,但没有下载任何数据。该功能的文档很差。我该如何实施呢?

  • 失败的监听器似乎坏了
  • 当我添加一个completeListener时,它会崩溃我的应用程序
  • firebaseStorage.setMaxDownloadRetryTimeMillis似乎没有 任何影响

关于如何处理文件下载的简历功能的任何想法?

1 个答案:

答案 0 :(得分:0)

当您说在下载过程中关闭网络时,您是如何做到的?

我问的原因是,如果您暂时离开活动以关闭网络流,那么 您的问题可能是活动生命周期问题。

如果您离开活动但未在ng-hideonPause()等处理此活动,那么您可能会遇到此类行为。

除此之外,您的代码看起来类似于文档(以及我的代码工作正常),除了您没有链接&#39;你添加听众的方法(不应该是一个问题)。

但是,您在此处复制和粘贴的代码部分折叠,并且不会显示您是否覆盖onStop()方法,但我认为它已折叠在该箭头中。

如果您仍在处理此问题,是否可以针对您在崩溃时收到的任何错误发布跟踪记录?

这是一个在网络故障期间工作的代码块,仅供参考:

onFailure(Exception e)