1
私はFirebaseをテストするための基本的なプログラムを持っています。私は2つのボタンがあります。第一、第二「b」を書いていると私はサービスでそれらをチェックしています、Firebaseデータベース「A」に書いている: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データベースに書き込むことはできませんが、OnDataChanged
の機能はまだ起動しています。私は、データベースのデータが変更されたときに何かしたい。
更新:私はデータベースを手動で変更しましたが、OnDataChange
はトリガされません。プログラムの起動中は一度だけ動作します。
これはかなり驚くべきことです。ありがとう! –