2017-09-29 1 views
-1

필자는 잠시 Firebase Realtime Database에 대해 읽었습니다. 이제 데이터베이스에서 이벤트 중심 데이터를 가져 오는 것에 대한 전체 아이디어에 대해 궁금합니다. 데이터가 변경된 경우에만 데이터베이스에서 데이터를 다운로드하면 배터리 또는 인터넷 연결과 같은 장치 리소스에 대한 요구 사항이 훨씬 적습니다. 내 데이터베이스의 구조를 반영하고 Child/Value 리스너를 사용하여 값을 업데이트하는 모델 객체로 Android 활동에 필요한 전체 데이터베이스 조각을 다시 매핑 할 수 있다고 생각했습니다. 그런 다음 유연한 형태의 POJO에 필요한 전체 데이터를 갖게 될 것이고 데이터베이스가 변경 될 때마다 업데이트 될 것입니다. 따라서 실제로는 실시간 솔루션입니다. 그러나 그러한 수의 청취자가 배터리 수명이나 데이터 전송과 같은 용어로 사용자의 기기를 느려지거나 과부하하게하는지 궁금합니다.여러 Firebase 데이터베이스 하위/값 리스너가 모바일 앱에 효율적입니까?

Java 모델 객체에 데이터베이스 상태를 반영하는 것이 좋은 해결책입니까 아니면 다른 방법을 사용해야합니까?

누구나 내 의심을 해결할 수 있습니까? 감사합니다.

답변

2

리스너는 데이터베이스에서 무언가가 변경 될 때만 트리거됩니다. 따라서 필요한 경우에만 데이터를 얻습니다. 보이는 활동이 없을 때 앱이 소켓 연결을 잃을 것으로 예상됩니다. 이것이 Firebase SDK의 작동 방식입니다. 또한 Android는 사용자가 적극적으로 사용하지 않을 때 데이터 및 배터리를 소비하지 않도록 적극적으로 백그라운드 애플리케이션을 일시 중지합니다.

예를 들어 활동을 다시 시작하면 Firebase SDK가 서버와 통신하는 데 사용하는 websocket을 복원하려고 시도합니다. 이 websocket은 SDK에 의해 완벽하게 관리됩니다.

희망이 있습니다.

+0

대단히 감사합니다. 약간의 질문이 있습니다. 해당 객체가 더 이상 필요 없거나 삭제 될 때 만든 모든 청취자를 분리해야합니까? 그렇다면 참조로 내 청취자를 추적해야합니다. 그렇지 않습니까? – Mesayah

+0

예, 필수입니다! 활동의 라이프 사이클에 따라 'yourRef.removeEventListener (valueEventListener);'를 사용해야합니다. –

0

Firebase.addvalueeventlistener()는 요청하는 데이터베이스에 변경 사항이나 업데이트가있는 경우에만 작동합니다. 자바 객체로 이동하는 좋은 방법이거나 HashMaps <>을 사용할 수도 있습니다. 장치 배터리 및 성능에 대한 우려가있는 경우 전체 데이터베이스를 요청하는 대신 변경 이벤트를 추적하려는 부분 만 가져 오십시오. 그리고 Whatsapp로 백그라운드에서 데이터를 가져 오려면 인터넷 용 브로드 캐스트 수신기와 Firebase.addvalueeventListener()가 사용 된 startservice()를 사용할 수 있습니다.

관련 문제