2017-05-08 11 views
0

firebaseリアルタイムデータベースでキーと値のペアを使用して3日ごとにリフレッシュするノードがあります。私は、このノードで変更を加えたときにのみ、新しい値を取得するようにしたい(3日ごと)。私は現在、テストにこのコードを使用します。Firebaseデータベースリスナーは、変更時にのみ値を取得します

mFirebaseDatabase.getReference().child("test").addValueEventListener(new ValueEventListener() { 
       @Override 
       public void onDataChange(DataSnapshot dataSnapshot) { 
        Long tsLong = System.currentTimeMillis(); 
        Log.d("thatsdatasnapshot", "thatsdatasnapshot = " + tsLong.toString()); 
Log.d("thatsdatasnapshot", "thatsdatasnapshot = " + dataSnapshot.toString()); 
       } 

私の問題は、このリスナーの印刷での私のログは非常に多くの場合でも、私は、たとえば毎回私はアプリを起動し、私のノードには何も変更しないことです。だから私は私のノードのすべての値は、私が自分のデータベースを変更するときだけでなく、 "非常に頻繁に"ダウンロードされると思います。私が間違っている ?変更があった場合にのみ私のノードの値をダウンロードする方法は?私はそれがaddValueEventListener()が何をすべきかと思ったが、私のログが頻繁に印刷されるのを見ると疑いがある。

は方法addValueEventListener

アレックス

答えて

1

をいただき、ありがとうございますのみ、そのようなあなたのアプリ内のすべてのmRef.push()またはmRef.child("someChild").setValue()メソッド呼び出し用として、アプリのあなたの現在の実行中のリアルタイムDBの変化時に値を、トリガされます。

私はfirebaseリアルタイムデータベースにほとんど同じ種類の問題があり、最終的にはAsyncTaskを作成して、アプリケーションのランタイム中に更新する必要があるものを更新しました。

あなたがしなければならないことは、AsyncTaskを作成し、あなたのFirebaseデータベースへのREST呼び出しを行い、それを使って更新することです。

関連する問題