Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.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
Android Firebase OnDataChange功能在错误时间触发?_Android_Firebase_Firebase Realtime Database - Fatal编程技术网

Android Firebase OnDataChange功能在错误时间触发?

Android Firebase OnDataChange功能在错误时间触发?,android,firebase,firebase-realtime-database,Android,Firebase,Firebase Realtime Database,我有一个测试Firebase的基本程序。我有两个按钮:第一个是写入Firebase数据库“a”,第二个是写入“b”,我正在使用服务检查它们: myRef.addValueEventListener(new ValueEventListener() { @Override public void onDataChange(DataSnapshot dataSnapshot) { String value = dataSnapshot.getV

我有一个测试Firebase的基本程序。我有两个按钮:第一个是写入Firebase数据库“a”,第二个是写入“b”,我正在使用服务检查它们:

myRef.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            String value = dataSnapshot.getValue(String.class);
            if(value=="a")
            {
                ToneGenerator toneGenerator= new   ToneGenerator(AudioManager.STREAM_DTMF,ToneGenerator.MAX_VOLUME);
                //this will play tone for 2 seconds.
                toneGenerator.startTone(ToneGenerator.TONE_DTMF_1, 500);
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                toneGenerator.startTone(ToneGenerator.TONE_DTMF_1, 500);

            }

            if(value=="b")
            {
                ToneGenerator toneGeneratora= new   ToneGenerator(AudioManager.STREAM_DTMF,ToneGenerator.MAX_VOLUME);
                //this will play tone for 2 seconds.
                toneGeneratora.startTone(ToneGenerator.TONE_DTMF_3, 500);
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                toneGeneratora.startTone(ToneGenerator.TONE_DTMF_3, 500);

            }
问题是,即使我没有互联网连接,我的意思是,即使我无法写入Firebase数据库a或b,当我单击按钮时,
OnDataChanged
功能仍会触发。我想在数据库数据更改时做一些事情


更新:当我手动更改数据库时,
OnDataChange
仍然没有触发。它在程序启动时只工作一次

使用
ChildEventListener
然后可以将要执行的代码放在
onChildChanged()方法中。

这真是太神奇了。谢谢