2016-12-07 1 views
1

Android 앱에서 Firebase Realtime Database에 문제가 있습니다.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

'Log' 문을 onDataChange()에 추가하여 콜백이 언제 발생하는지 확인합니다. –

답변

1

마지막으로, 나는 버그를 발견했다.

사실 파이어베이스 은 다중 연결을 지원하지 않습니다. 그래서 다른 모든 DatabaseReference를 내 활동에서 제거했습니다. 그리고 지금 작동합니다.

나를 도우려는 사람들에게 감사드립니다.