从Firebase数据库中删除ValueEventListener的位置?

时间:2017-11-22 07:45:45

标签: android firebase firebase-realtime-database

我们说我有一个ValueEventListener来监听某个查询

 val reference = FirebaseDatabase.getInstance().getReference(FirebaseConstants.ARCHIVE)
        reference.orderByKey().limitToLast(30).addValueEventListener(archiveListener)

我是否需要从查询中删除侦听器,如此

FirebaseDatabase.getInstance().getReference(FirebaseConstants.ARCHIVE).orderByKey().limitToLast(30).removeEventListener(archiveListener)

还是会从参考对象中删除呢?像这样

FirebaseDatabase.getInstance().getReference(FirebaseConstants.ARCHIVE).removeEventListener(archiveListener)

1 个答案:

答案 0 :(得分:1)

Firebase中的常见做法是使用以下代码行将监听器相应地移除到活动的生命周期:

print (dfs['leaf1'])
   leaf1
0    1.0
1    1.0
2    4.0
3    1.0
4    4.0
5    1.0
6    1.0
7    1.0
8    4.0
9    1.0

print (dfs['leaf3'])
Empty DataFrame
Columns: [leaf3]
Index: []
  1. 如果您已使用databaseReference.removeEventListener(valueEventListener); 方法添加了监听器,则必须使用onStart方法将其删除。
  2. 如果您已使用onStop方法添加了监听器,则必须使用onResume方法将其删除。
  3. 如果您已使用onPause方法添加了监听器,则必须使用onCreate方法将其删除。
  4. 但请记住,并不总是调用onDestroy

    如果您使用的是onDestroy,则意味着addListenerForSingleValueEvent()方法会立即执行,并且在执行该方法后,一旦它停止侦听它所附加的参考位置。所以在这种情况下,不需要删除监听器。