Firebase OnDataChange函数触发错误的时间?

时间:2017-04-05 20:57:34

标签: android firebase firebase-realtime-database

我有一个测试Firebase的基本程序。我有2个按钮:第一个是写入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仍未触发时。它在程序启动时只运行一次。

1 个答案:

答案 0 :(得分:2)

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