2017-04-05 107 views
1

我有一個測試Firebase的基本程序。我有2個按鈕:第一種是寫火力地堡數據庫「A」,第二個是寫「b」和我同一個服務檢查他們:Firebase OnDataChange功能觸發錯誤時間?

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仍然沒有觸發。它只在程序啓動時工作一次。

回答

2

使用ChildEventListener然後你可以把你想要執行的代碼放在​​方法中。

+0

這真是太神奇了。謝謝! –