Firebase 是否在 Android 上为其侦听器使用 `WeakReference`?
Does Firebase use `WeakReference` for their listeners on Android?
我想知道 Firebase 是否使用 WeakReference
class 来引用侦听器实例。
想象一下以下场景:一个愚蠢的开发人员在他的 SillyActivity
的 onCreate()
中附加了一个 ValueEventListener
并且忘记将其删除。如果 SillyActivity
被杀死,监听器引用是否无效?否则它会留在进程堆中,甚至一直被执行。
换句话说:作为 WeakReference
,如果监听器在 activity/fragment 的生命周期中只添加一次,那么不被删除并不是灾难。它不会在 activity/fragment.
的生命周期内泄漏
另一个相关的额外问题是,如果添加了 addListenerForSingleValueEvent()
的听众会自动删除。该文档声称会触发一次侦听器但不会将其删除。我认为它会自动删除 - 这将是实现一次性火灾的最简单方法。
我怀疑,否则它不会像这样工作:
polls.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot snapshot) {
...
}
}
因为不会有任何非WeakReference
的听众。
我想知道 Firebase 是否使用 WeakReference
class 来引用侦听器实例。
想象一下以下场景:一个愚蠢的开发人员在他的 SillyActivity
的 onCreate()
中附加了一个 ValueEventListener
并且忘记将其删除。如果 SillyActivity
被杀死,监听器引用是否无效?否则它会留在进程堆中,甚至一直被执行。
换句话说:作为 WeakReference
,如果监听器在 activity/fragment 的生命周期中只添加一次,那么不被删除并不是灾难。它不会在 activity/fragment.
另一个相关的额外问题是,如果添加了 addListenerForSingleValueEvent()
的听众会自动删除。该文档声称会触发一次侦听器但不会将其删除。我认为它会自动删除 - 这将是实现一次性火灾的最简单方法。
我怀疑,否则它不会像这样工作:
polls.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot snapshot) {
...
}
}
因为不会有任何非WeakReference
的听众。