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

실시간 주차장 상태 확인 비동기 처리를 어떻게 해야 할까요

0 추천
서버는 firebase의 real-time database를 사용중입니다

서버에서 주차장의 자리의 상태값을 어플로 가져와서 주차장의 각 자리의 상태에 따라 버튼의 색을 변경하도록 하려고 합니다

여기서 주차장의 상태를 비동기적으로 계속 받아서 그 값을 사용해야 하는데 메인 스레드에서 계속 실행되게 하면 오류가 발생합니다. 주차장의 상태가 업데이트 되면 어플로 값이 자동으로 넘어오는데 이걸 새로운 스레드에서 돌려야 하나요?  비동기처리중에 어떤방식이 제일 적합할까요..? 사용자가 자신이 주차할 위치의 버튼을 누르면 상태를 얻어오는 것을 멈추게끔 하려고 생각하고 있습니다. 그 전까지는 계속 서버의 값을 받아오는 스레드가 동작중이어야하는데 어떻게 해야할지 막막합니다...  혹시 어떤 부분을 공부해야 하는지 알고싶습니다.
ss6638 (140 포인트) 님이 2021년 5월 30일 질문
여기서 주차장의 상태를 비동기적으로 계속 받아서 그 값을 사용해야 하는데 메인 스레드에서 계속 실행되게 하면 오류가 발생합니다.

=> 이 부분이 이해가 가지 않네요. 안되면 다 안되어야 하는데, 계속 실행할 때 오류가 난다는 게 좀 이해가 가지 않네요.
파이베이스는 콜백을 사용하기 때문에 콜백 등록/해제를 잘 해주시면 별문제가 없을텐데요.

1개의 답변

0 추천

파이어베이스 콜백은 데이터베이스에 변경이 생기면 등록된 콜백을 통해 이벤트가 전달되는 것으로 아는데요, 그렇다면 콜백을 등록/해제하는 방식으로 처리하시면 될 듯 합니다.

"사용자가 자신이 주차할 위치의 버튼을 누르면 상태를 얻어오는 것을 멈추게끔 하려고 생각하고 있습니다."

이 걸 처리하시기 직전에 콜백을 해제하세요. 그리고 주차 위치 지정이 끝나고 나면 다시 콜백을 등록하세요.

그리고 onStart/onStop 에서도 콜백 등록/해제를 고려하시는 것이 좋을 것 같네요.

spark (227,530 포인트) 님이 2021년 5월 31일 답변
...