取消 Firebase 存储上传任务

Posted

技术标签:

【中文标题】取消 Firebase 存储上传任务【英文标题】:Canceling an Firebase Storage UploadTask 【发布时间】:2022-01-10 02:24:41 【问题描述】:

我的用例很简单。在后台上传多张图片并在通知中显示进度。现在我想在用户按下通知中的取消按钮时取消此任务。由于上传任务无法序列化,那么我应该如何取消该特定上传任务?

【问题讨论】:

【参考方案1】:

在后台上传多张图片并在通知中显示进度。

对于这些操作,我假设您使用的代码行与此类似:

UploadTask uploadTask = storageReference.putFile(filePath);

现在我想在用户按下通知中的取消按钮时取消此任务。

如上面的代码行所示,在StorageReference 对象上调用的putFile(Uri uri) 方法返回一个UploadTask 类型的对象。这个类是StorageTask的子类,从术语上讲是ControllableTask的子类,也是CancellableTask的子类。

由于这些类之间有继承关系,可以简单的调用CancelableTask的cancel()方法:

尝试取消任务。

为了取消任务。在代码中应该是这样的:

uploadTask.cancel();

【讨论】:

谢谢亚历克斯。但这正是我所关心的。我将如何获得需要取消的这个特定 uploadTask 的实例。我需要通过意图传递它。有点像这样:intent.putExtra("task", (Parcelable) uploadTask);。但是uploadTask 不是Parcelable 也不是Serializable。 @Alex_Mamo 正如您已经提到的,您不能通过 Intent 传递 UploadTask 的实例,因为它既不是 Parcelable 也不是 Serializable。你能做的就是把它变成static,或者把那个对象转换成Parcelable,对吧?

以上是关于取消 Firebase 存储上传任务的主要内容,如果未能解决你的问题,请参考以下文章

使用Javascript上传Firebase文件

Firebase - 显示到 ListView

Firebase 存储上传任务继续永远不会触发

将Firebase存储与Google云CDN集成

将图像存储在 Firebase Storage 中并将元数据保存在 Firebase Cloud Firestore(测试版)中

Cloud Functions for Firebase:在不触及最大超时的情况下完成长流程