2017-05-08 1 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()가해야 할 일이라고 생각했지만 로그가 자주 출력되는 것을 볼 때 의심 스럽습니다.

알렉스

답변

1

addValueEventListener 만 트리거 방법, 감사 할 때 이러한 앱이 모든 mRef.push() 또는 mRef.child("someChild").setValue() 메소드 호출과 같은 응용 프로그램의 현재 운전 중 실시간 DB 변화의 값.

나는 firebase 실시간 데이터베이스에 거의 같은 종류의 문제가 있었으며 결국에는 앱의 런타임 중에 업데이트해야 할 내용을 업데이트하기 위해 AsyncTask을 생성하는 것에 의지했습니다.

당신이해야 할 일은 AsyncTask을 생성하고 Firebase 데이터베이스에 REST를 호출하고이를 사용하여 업데이트해야합니다.