我的应用程序中的每个片段都有自己的一组连续的Firebase侦听器。一旦活动片段发生变化,这些变得不必要,但是,听众在后台继续。除此之外,这些旧的侦听器可能会触发前一个片段的View更新,这可能会使应用程序崩溃。因此,一旦Fragment改变,我想整洁并清理听众。我不知道如何,但我有另一种解决方案,我很好奇你的想法和建议。
侦听器函数在片段fuSetListener();
中调用,例如:
onDataChange
这些函数检索并保存全局变量中的数据。
在Firebase侦听器的if(getActivity()==null){
reference.removeEventListener(this);
} else {
// Perform necessary onDataChange actions
}
中,我执行此if语句以检查是否应删除侦听器:
getActivity()
问题出现了,null
只有在片段发生变化时才返回getActivity()
吗?或者null
可以在不更改片段的情况下返回repositories {
google()
}
并弄乱我的片段目的?
我已经应用了这种方法几次并且还没有遇到麻烦,但我想在继续之前与你核对。
答案 0 :(得分:0)
您需要根据片段的life-cycle
删除侦听器。
如果您在onStart
中添加了监听器,则必须在onStop
中将其删除。
如果您已在onResume
中添加了监听器,则必须在onPause
中将其删除。
如果您已在onCreate
中添加了监听器,则必须在onDestroy
中将其删除。
但请记住onDestroy
并不总是被调用。
希望它有所帮助。