마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

데이터 호출 시 버퍼링 해결.

0 추천
firebase realtime database 에서 값을 가져오기 위해서 listener를 등록했습니다.
그런데 화면이 띄워지는 동시에 data를 가져오는 방식이 아닌 화면이 띄워진 다음에 listener가 호출되서 약간의 버퍼링이 걸리면서 data를 가져오는 문제점이 있습니다.
미리 database의 data를 어딘가에 저장한 후에 다음 화면으로 넘어가서 해당 data를 불러오도록 하려고 했으나 실패했습니다.
어떻게 해야 화면에 즉석으로 data를 뿌려줄 수 있을까요?
verynovice (170 포인트) 님이 2022년 5월 23일 질문

1개의 답변

0 추천
일단은 화면에 버퍼링이 걸린다는 부분부터 다시 점검을 해야 할 것 같습니다. 설명의 내용으로 봐서는 UI가 블락을 당하는 듯 한데요, 이게 맞다면 데이터를 가져오는 부분에서 일단 점검을 해보셔야 할 듯합니다.

Firebase의 데이터 구조가 권장하는 flat(자식노드의 레벨이 가능하면 적은)한 형태의 구조인지, 데이터를 가져오는 부분에서 이미 가져온 데이터를 다시 가져오지는 않는지, 그리고 가져오고 나서 데이터를 가공하거나 하는 부분이 시간이 걸리는 작업이고 이걸 메인쓰레드에서 하지는 않는지 체크해 보셔야 겠네요.

제 기억으로는 파이어베이스는 상위 노드를 읽어오면 그 안에 있는 하위노드를 전부 가져오는 걸로 앍고 있습니다. 파이어베이스에서 제공하는 관련 동영상(유투브), 개발자 가이드를 통해서 현재 데이터를 구성하고 처리하는 방식이 적절한 방식인지 확인하시기 바랍니다.

위 부분을 먼저 확인하시고 나서 문제의 소지가 없다면, 로컬 DB를 이용해 캐시를 하는 방법을 고려해 보실 수 있을 것 같습니다.

추가로 데이터를 로딩하는 동안 사용자에게 데이터가 로딩되고 있음을 알려줄 수 있는 ProgressBar나  loading dialog 같은 사용자 인터페이스가 없다면, 이 부분도 추가하시면 좋을 것 같습니다.
spark (225,780 포인트) 님이 2022년 5월 24일 답변
spark님이 2022년 5월 24일 수정
답변 감사드립니다. 방향을 잡았습니다. 복받으세요~
...