2016-12-07 133 views
1

我在我的Android應用程序面臨的一個問題火力地堡實時數據庫。ValueEventListener觸發onDataChange方法只需一次

什麼我想是更新實時列表。但更新僅適用於應用程序啓動。它不會自動更新。所以,我需要在需要更新時重新啓動應用程序。

是否有缺失的部分?我很感激任何幫助。由於

問題: 監聽器觸發只有在應用程序重啓onDataChange方法。數據是正確的。但之後聽衆不工作。

代碼:

mRef = FirebaseDatabase.getInstance().getReference(); 
mPostRef = mRef.child(DbUtils.POST_CHILD); 
mPostRef.keepSynced(true); 

mPostRef.addValueEventListener(new ValueEventListener() { 
    @Override 
    public void onDataChange(DataSnapshot dataSnapshot) { 
     List<Post> objList = new ArrayList<>(); 
     for(DataSnapshot objSnapShot: dataSnapshot.getChildren()){ 
      Post obj = objSnapShot.getValue(Post.class); 
      obj.setKey(objSnapShot.getKey()); 
      objList.add(obj); 
     } 
     mAdapter.addAllAndNotify(objList); 

    } 

    @Override 
    public void onCancelled(DatabaseError databaseError) { 
     Log.i("Posts", "Listener was canceled"); 
    } 
}); 
+1

確定數據正在改變?嘗試使用Firebase控制檯更改數據。我運行了10.0.1版的代碼,onDataChange()在數據更改時觸發。 –

+0

我在控制檯中更改了數據。代碼不起作用。 只要你改變你的數據是否更新? (我使用9.8.0,將使用10.0.1進行嘗試)。謝謝你的幫助。 –

+0

向'onDataChange()'添加'Log'語句以查看回調何時觸發。 –

回答

1

最後,我發現的bug。

事實是火力地堡不支持多個連接。 因此,我從我的活動中刪除了所有其他DatabaseReference。現在它起作用了。

感謝的人誰試圖幫助我。