【发布时间】:2017-11-07 13:54:28
【问题描述】:
为了从 Firebase 实时数据库接收数据,我需要注册监听器:
objectReference.addValueEventListener(valueEventListener);
删除(注销)此侦听器的正确方法是什么?
【问题讨论】:
标签: android firebase firebase-realtime-database
为了从 Firebase 实时数据库接收数据,我需要注册监听器:
objectReference.addValueEventListener(valueEventListener);
删除(注销)此侦听器的正确方法是什么?
【问题讨论】:
标签: android firebase firebase-realtime-database
删除监听器的正确方法是使用这行代码根据活动的生命周期将其删除:
databaseReference.removeEventListener(valueEventListener);
请注意,如果您在onStart 中添加了侦听器,则必须在onStop 中删除它。如果您在onResume 中添加了侦听器,则必须在onPause 中删除它。如果您在onCreate 中添加了监听器,则必须在onDestroy 中删除它。
但请记住,onDestroy 并不总是被调用。
【讨论】:
最好检查listener是否为null或有对象,因为如果listener对象为null会出现运行时错误
if(valueEventListener!=null){
databaseReference.removeEventListener(valueEventListener);
}
【讨论】:
onDestroy 方法!?
onBackPressed 覆盖方法中将其删除。或者onDestroy()也可以
你也可以这样做:
componentWillUnmount() {
firebase.database().ref('example').child(this.state.somethingDyamic).off('value');
};
doSomething() {
firebase.database().ref('example').child(this.state.somethingDyamic).on('value', (snapshot) => {
...
});
}
【讨论】: