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

MVVM Repository layer에서 HTTP 를 이용한 data polling을 하는 일반적인 방법이 있을까요?

0 추천
현재 repository의 remoteRepository 에서 특정 데이터는 서버로부터 HTTP GET을 이용해서 최신으로 유지해야하는 데이터가 있습니다. (ex 현재 날씨/기온)

최신 데이터를 지속적으로 polling하기 위해서 background thread + timer를 이용해서 업데이트를 하고 있는데요 혹시 이 방법이 아닌 더 나이스한(?) 혹은 일반적으로 google이 추천하는 방법이 있을까요?

google가이드를 보면 broadcast receiver이나 schedules repeating alarm, sync Adapter같은것도 관련이 있어 보이는데.....딱히 어느 방법이 일반적이다 라고 할만한것을 잘 모르겠네요...

받아 온데이터는 최대 500개까지 분단위로 저장하고 시간별로 기온의 변화 추이를 모니터링 및 계산되고 있습니다. 따라서, "사용자가 필요할때만 받으면 되는거 아니에요?" 라는 반문은 자제 부탁드립니다.
나인에스 (120 포인트) 님이 2021년 1월 20일 질문
글쎄요. 제가 하고 있는 프로젝트가 1초마다 폴링을 한는 앱이라서 구글이 권장하는 방법이 있다면 저도 사용하고 싶은데, 아직까지는 찾지는 못했습니다.
인터뷰를 보면서 많은 사람들이 폴링을 구현하는 방법을 보았는데, RxJava의 operation을 이용하거나 timer+Coroutine을 이용해서 구현을 하는 두 가지 방법이 거의 전부였습니다.
저같은 경우는 Coroutine의 flow를 이용하여 작업을 하고 있습니다. Flow가 cold observable이라 데이터가 막 들어오더라도 처리하는데 문제가 없기 때문에 Flow를 사용하고 있습니다.
저는 화면단위 폴링이라 그렇지만 만약 백그라운드에서 계속  돌아가야 하는 폴링이라면 workmanager를 한번 살펴보세요. 그리고 폴링 데이터가 단순히 화면에 보여지는  경우라면, 앱이 백그라운드로 가서 화면이 보이지 않을 때는 폴링을 멈추었다가 화면이 다시 화면에 보여질 때 다시 시작하도록 하시는 것도 잊지 마시기 바랍니다.
그리고 기온의 변화 추이 같은 계산은 서버의 지원이 가능하다면 서버의 API에서 가져오는 것이 데이터의 정확성을 보장할 수 있을 것 같아 보입니다.
타겟 단말이 23+라면, 워커 매니저가 적절해 보입니다.

https://developer.android.com/topic/libraries/architecture/workmanager

(댓글로 수정)
답변 감사합니다. :)
말씀하신 workmanager를 다시 좀 살펴 봐야겠네요.

여담으로...날씨 서버가 제 서버가 아니다 보니...ㅠㅠ
backend를 구성해서 자료를 모은다음 그것을 전달하는 방법도 있긴 합니다만 이게 상용 앱이 아니라서 굳이 그렇게 까지는 하지 않고 있습니다.

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...