如果我添加相同的侦听器对象
private ValueEventListener dataChangedListener = new ValueEventListener() ...
mQery.addValueEventListener(dataChangedListener);
mQery.addValueEventListener(dataChangedListener);
就像我添加一次一样吗?如果要删除它,我应该致电
mQery.removeEventListener(dataChangedListener);
或不?
最佳答案
您可以通过简单地更新数据库中的某些数据并观察是否调用了onDataChanged来检查removeEventListener是否可以正常工作。
关于是否与一次添加相同:我有相同的问题,所以我检查了Firebase sources。据我了解(无论如何我都不是专家),Firebase确实在侦听器列表中添加了一个新对象,但它指向之前添加的同一侦听器。
您可以自己查看sources进行详细检查。
编辑:为澄清起见,我将添加一些屏幕截图...
如果我两次注册相同的子侦听器,就会发生这种情况。 onChildAdded被调用两次,并用Milk 2x填充列表。