【问题标题】:Removing continuous Firebase listeners on Fragment change在 Fragment 更改时删除连续的 Firebase 侦听器
【发布时间】:2018-03-08 16:02:32
【问题描述】:

我的应用程序中的每个 Fragment 都有自己的一组连续的 Firebase 侦听器。一旦活动的 Fragment 发生变化,这些就变得不必要了,但是,侦听器会继续在后台运行。除此之外,这些旧的监听器可能会触发前一个 Fragment 的 View 更新,这可能会导致应用程序崩溃。所以,一旦片段发生变化,我想整理并清理听众。我不知道怎么做,但我有一个替代解决方案,我很好奇你的想法和建议。

在FragmentsonCreate中调用监听函数,例如:

fuSetListener();  

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

在 Firebase 监听器的 onDataChange 中,我执行这个 if 语句来检查是否应该删除监听器:

if(getActivity()==null){ 
    reference.removeEventListener(this); 
} else {
    // Perform necessary onDataChange actions
}

那么问题来了,getActivity() 是否只返回null 以防 Fragment 发生变化?或者 getActivity() 可以返回 null 而不更改 Fragment 并弄乱我的 Fragment 用途?

我已经应用了几次这种方法,还没有遇到问题,但我想在继续之前与您确认一下。

【问题讨论】:

    标签: java android firebase fragment listener


    【解决方案1】:

    您需要根据片段的life-cycle 移除监听器。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-01-24
      • 1970-01-01
      • 2015-09-07
      • 2021-08-13
      • 2014-02-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多