删除片段更改时连续的Firebase侦听器

时间:2017-09-27 08:41:41

标签: java android firebase fragment listener

我的应用程序中的每个片段都有自己的一组连续的Firebase侦听器。一旦活动片段发生变化,这些变得不必要,但是,听众在后台继续。除此之外,这些旧的侦听器可能会触发前一个片段的View更新,这可能会使应用程序崩溃。因此,一旦Fragment改变,我想整洁并清理听众。我不知道如何,但我有另一种解决方案,我很好奇你的想法和建议。

侦听器函数在片段fuSetListener(); 中调用,例如:

onDataChange

这些函数检索并保存全局变量中的数据。

在Firebase侦听器的if(getActivity()==null){ reference.removeEventListener(this); } else { // Perform necessary onDataChange actions } 中,我执行此if语句以检查是否应删除侦听器:

getActivity()

问题出现了,null只有在片段发生变化时才返回getActivity()吗?或者null可以在不更改片段的情况下返回repositories { google() } 并弄乱我的片段目的?

我已经应用了这种方法几次并且还没有遇到麻烦,但我想在继续之前与你核对。

1 个答案:

答案 0 :(得分:0)

您需要根据片段的life-cycle删除侦听器。

如果您在onStart中添加了监听器,则必须在onStop中将其删除。 如果您已在onResume中添加了监听器,则必须在onPause中将其删除。 如果您已在onCreate中添加了监听器,则必须在onDestroy中将其删除。 但请记住onDestroy并不总是被调用。

希望它有所帮助。