使用Firebase时防止内存泄漏的最佳方法

And*_*sen 2 android memory-leaks firebase

在Android中,当一个Activity被销毁时,我应该删除所有的侦听器

ref.addAuthStateListener(listener);
ref.addListenerForSingleValueEvent(listener);
ref.addChildEventListener(listener);
ref.addValueEventListener(listener);
Run Code Online (Sandbox Code Playgroud)

使用ref.removeEventListener(listener)或它们会被自动销毁?

我知道因为FirebaseRecyclerAdapter我们可以cleanup()用来做这项工作.除了监听器和适配器之外还有其他需要清理的对象吗?

Fra*_*len 5

Firebase侦听器不会自动删除.您确实必须通过调用删除它们removeEventListener(),就像添加它们一样.

是否删除侦听器onDestroy()实际上取决于您添加它们的位置.我通常会在与添加它们的位置相反的情况下删除它们.所以,如果我在补充然后onCreate(),我再删除(或致电cleanup()onDestroy().对于类似的onStart()/ onStop()onPause()/ onResume().

  • **一旦被触发**就会自动删除。如果它没有被触发(即如果您处于离线状态),您仍然应该将其删除。就我而言,不使用它们的另一个原因。:-) (2认同)