Firebase 是否在 Android 上为其侦听器使用 `WeakReference`?

Does Firebase use `WeakReference` for their listeners on Android?

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

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

换句话说:作为 WeakReference,如果监听器在 activity/fragment 的生命周期中只添加一次,那么不被删除并不是灾难。它不会在 activity/fragment.

的生命周期内泄漏

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

我怀疑,否则它不会像这样工作:

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

因为不会有任何非WeakReference的听众。