繁体   English   中英

如何在 Android 中取消 Firebase 实时数据库正在进行的写入或删除操作

[英]How to cancel Firebase Realtime Database ongoing write or delete operation in Android

我正在构建一个聊天应用程序,并且像 Whatsapp 一样,我需要为用户提供在互联网连接关闭时将他们的消息保存为未送达的工具,并且一旦互联网恢复,应该重试数据以发送给接收者.

但是,如果我使用 Firebase .setValue()安排了写入操作,那么如果用户改变主意并且不想发送该消息,或者在技术术语中不想setValue ,我该如何取消该过程() ,我怎么能停止正在进行的写入。

正如我从您的场景中了解到的,当设备处于离线状态并且您希望让用户可以删除该消息时,就会出现问题,因此一旦重新连接就无法显示该消息。 因为setValue()方法返回一个Task<Void>对象,并且因为我在这个类中没有看到任何取消方法,所以唯一要做的就是简单地删除消息。 在这种情况下,当用户重新联机时,其他用户将不会看到已删除的消息。

另一方面,用户确实有可能在发送消息后立即失去连接。 即使有取消方法,您也没有什么可取消的,因为消息已在服务器上设置。 同样,您唯一的选择是删除该消息。 删除操作将保留在队列中,直到设备重新连接,并且在同步后消息将被删除。

除此之外,请记住将持久化设置为启用,因为它默认不启用:

setPersistenceEnabled(true);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM