我想知道Firebase是否使用WeakReference
類來引用偵聽器實例。Firebase是否在Android上爲他們的聽衆使用`WeakReference`?
想象一下下面的場景:愚蠢的開發人員在他SillyActivity
的onCreate()
中附加ValueEventListener
,並忘記將其刪除。如果SillyActivity
被殺死,聽衆參考是否會失效?否則它將保留在進程堆中,甚至繼續執行。
換句話說:作爲一個WeakReference
,如果只在活動/片段的生命週期中添加一次,那麼對於偵聽器不會被刪除不會是一場災難。它不會在活動/片段的整個生命週期中泄漏。
另一個相關的獎金問題是,如果聽衆添加了addListenerForSingleValueEvent()
會自動刪除。該文件聲稱一次觸發偵聽器,但不會將其刪除。我認爲它會自動移除 - 這將是實現一次性射擊的最簡單方法。
WeakReferences通常不應該在Android中使用。 Dalvik將立即清除任何只有弱引用的對象。與JVM相比,它將使它們在需要資源之前一直存在,使其成爲可行的緩存候選者。 –