Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/402.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 何时应删除OnCompleteListener?_Java_Android_Firebase_Google Cloud Firestore_Firebase Authentication - Fatal编程技术网

Java 何时应删除OnCompleteListener?

Java 何时应删除OnCompleteListener?,java,android,firebase,google-cloud-firestore,firebase-authentication,Java,Android,Firebase,Google Cloud Firestore,Firebase Authentication,我读过这篇文章,它说在使用get函数时不需要删除任何侦听器,这是否适用于set、update和delete 如何区分何时需要删除侦听器?我很困惑,这几天我都在为听众的事情挣扎。谢谢。如果您实际使用的是一个真正的监听器,您只需要删除一个监听器,也就是说,正在收听录制的实时更新。因此,如果您只是使用get、set、update或delete,那么这些都是带有addListenerForSingleValueEvent的一次性事件,不需要真正的侦听器,不管名称如何,也不需要删除任何侦听器。您可能只需要

我读过这篇文章,它说在使用get函数时不需要删除任何侦听器,这是否适用于set、update和delete


如何区分何时需要删除侦听器?我很困惑,这几天我都在为听众的事情挣扎。谢谢。

如果您实际使用的是一个真正的监听器,您只需要删除一个监听器,也就是说,正在收听录制的实时更新。因此,如果您只是使用get、set、update或delete,那么这些都是带有addListenerForSingleValueEvent的一次性事件,不需要真正的侦听器,不管名称如何,也不需要删除任何侦听器。您可能只需要一个完成处理程序,例如addOnSuccessListener,以便在查询完成后执行某些操作

如果您使用的是onDataChange之类的东西,那么您正在轮询/侦听数据以进行更改,并且在切换屏幕或导航离开该组件时希望删除该侦听器


由于这个原因,命名在Java/Kotlin中有点混淆——想想监听器,如果您正在以轮询方式监视或监视数据,那么需要删除它。如果您只是执行一次性事务,则无需删除任何内容。

引用您链接的答案,无需删除添加到任务对象中的侦听器,这看起来很不错clear@TimCastelijns感谢您的评论,但在设置、更新和删除时是否适用相同的规则?如果是,我如何知道何时删除OnCompleteListener,何时不删除?感谢您的回答,我理解了关于获取或设置、更新或删除的第一部分,但现在我对最后一部分感到困惑。什么是addListenerForSingleValueEvent,什么是onDataChange?在查询数据库时,您设置了要查询的对象的引用引用。然后,您可以使用addListenerForSingleValueEvent获取该对象一次,或者使用onDataChange获取该对象并继续监视侦听该对象-随着被监视对象发生新的更改,您将获得更新的对象。我现在明白您的意思了。请注意,我使用的是云Firestore而不是实时数据库。这里没有addListenerForSingleValueEvent:|您的答案仍然适用于Cloud Firestore吗?啊-是的。它仍然适用,但具有不同的命名约定。在Firestore中,您的一次性查询将使用无需取消订阅的侦听器。get.addOnSuccessListener和您的观察者/轮询将使用addSnapshotListener,在这种情况下,您希望在删除组件/页面之前删除侦听器。