当监听的Firebase数据库路径被移除后,ValueEventListener是否仍在监听?
问题解答
当数据库中path路径对应的节点被移除后,你添加的ValueEventListener会继续保持监听状态,直到你主动调用removeEventListener()将其移除。
原因很明确:ValueEventListener绑定的是你指定的查询路径,而非路径下的具体数据内容。哪怕该路径下的数据被完全清空(变成null),监听器依然会持续关注这个路径的变化:
- 节点被移除的瞬间,
onDataChange会被触发一次,此时通过snapshot.exists()可以判断数据已不存在; - 之后如果有新数据写入这个
path路径,onDataChange会再次被触发,返回新的快照数据。
你的代码示例:
FirebaseDatabase.reference.child(path).addValueEventListener(object : ValueEventListener { override fun onDataChange(snapshot: DataSnapshot) { /**LOGIC**/ } override fun onCancelled(error: DatabaseError) { } })
内容的提问来源于stack exchange,提问作者Guy Sadoun
相关产品推荐
相关产品推荐

