Firebase是否在Android上使用“弱参考”作为听众?



我想知道Firebase是否使用WeakReference类来引用侦听器实例。

想象一下以下场景:一个愚蠢的开发人员在他的SillyActivity onCreate()附加了一个ValueEventListener,却忘记将其删除。如果SillyActivity被杀死,侦听器引用是否无效?否则,它将保留在进程堆中,甚至继续执行。

换句话说:作为一个WeakReference,如果在活动/片段的生命周期中只添加一次,那么侦听器不被删除并不是一场灾难。它不会在活动/片段的生命周期内泄漏。

另一个相关的奖励问题是,如果添加addListenerForSingleValueEvent()的听众会自动删除。该文档声称触发侦听器一次,但不删除它。我认为它会自动删除 - 这将是实现一次性火灾的最简单方法。

我对此表示怀疑,否则它不适用于这样的事情:

polls.addListenerForSingleValueEvent(new ValueEventListener() {
  @Override
  public void onDataChange(DataSnapshot snapshot) {
    ...
  }
}

因为听众不会有任何非WeakReference

最新更新