Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Firebase android。如果我多次添加同一个侦听器会怎么样?_Java_Android_Firebase - Fatal编程技术网

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通过侦听器列表时,它会多次调用同一对象的数据,如果这回答了你的问题,考虑选择一个最佳答案。