gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:42:31 24 4
gpt4 key购买 nike

我需要使用 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 似乎没有任何效果

关于如何处理文件下载的简历功能有什么想法吗?

最佳答案

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

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

如果您离开 Activity 并且不在 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) {

}
}

关于android - 如何在 firebase 存储中恢复文件下载?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38120927/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com