2017-05-08 37 views
0

我有一個節點,每三天使用我的Firebase實時數據庫中的一些鍵值對進行刷新。我希望我的應用程序只有在此節點中進行更改時才能獲取新值(每隔三天左右)。我目前使用此代碼測試: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()應該做的事情,但是當我經常看到我的日誌打印時,我有疑問。

謝謝

亞歷

回答

1

方法addValueEventListener只觸發時你當前的應用程序的運行過程中實時數據庫變化值,如在你的應用程序的每個mRef.push()mRef.child("someChild").setValue()方法調用。

我和firebase實時數據庫有幾乎相同的問題,最後我創建了一個AsyncTask來更新您的應用運行時必須更新的內容。

您需要做的是創建一個AsyncTask並對您的Firebase數據庫進行REST調用,然後使用它進行更新。

相關問題