Java Firebase android。如果我多次添加同一个侦听器会怎么样?
如果我添加相同的侦听器对象Java Firebase android。如果我多次添加同一个侦听器会怎么样?,java,android,firebase,Java,Android,Firebase,如果我添加相同的侦听器对象 private ValueEventListener dataChangedListener = new ValueEventListener() ... mQery.addValueEventListener(dataChangedListener); mQery.addValueEventListener(dataChangedListener); 就好像我加了一次一样?如果我想移除它,我应该打电话 mQery.
private ValueEventListener dataChangedListener = new ValueEventListener() ...
mQery.addValueEventListener(dataChangedListener);
mQery.addValueEventListener(dataChangedListener);
就好像我加了一次一样?如果我想移除它,我应该打电话
mQery.removeEventListener(dataChangedListener);
是不是?不,不一样了。如果有多个引用都指向Firebase数据库中完全相同的位置,并且所有这些引用上都有侦听器,那么对该位置的数据的任何更改都将触发所有侦听器
如果您不希望侦听器触发更改,请将其从您首先添加它的引用中删除。据我所知,没有办法有条件地表明侦听器应该基于其他条件触发-您只需添加和删除它们。您可以检查removeEventListener是否可以自己工作,只需更新数据库中的一些数据,并观察是否调用了onDataChanged 关于它是否与添加一次相同:我有相同的问题,所以我检查了Firebase。据我所知,(我无论如何都不是这方面的专家),Firebase确实在侦听器列表中添加了一个新对象,但它指向前面添加的同一个侦听器 你可以自己看一看,进行详细检查 编辑:为了澄清,我将添加一些截图 如果我注册同一个子侦听器两次,就会发生这种情况。onchildaded将被调用两次,并用Milk 2x填充列表
谢谢你的回答。因此,当FielBASE通过侦听器列表时,它会多次调用同一对象的数据,如果这回答了你的问题,考虑选择一个最佳答案。