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

백그라운드 통신 도와주세요 ㅠㅠ

0 추천
와... 머리가 터질꺼 같습니다.

service를 활용해서 휴대폰이 잠금되어있거나 다른 작업 중일 때도 작동할 수 있도록 해야합니다.

원하는 작업은 엑티비티에서 해당 서비스를 실행하면 해당 서비스 안에서는 하나의 스레드를 만들고 그 스레드 안에서 retrofit2을 활용해서 서버와 10초 간격으로 통신을 합니다. 그러다가 서버에서 true를 반환하면 계속 retrofit2를 반복하고 false를 보내면 그 false 값을 엑티비티에 보내줘야 합니다. 만약 폰이 꺼져있는 상태라면 진동 같은 알람이 울리게 해야되죠. 알람 울리는 부분과 retrofit2는 알겠는데 service는 잘 모르겟네요 안드로이드 developer도 봤지만 영 쉽지 않네요.

 

retorfit2를 통해서 false를 받으면 해당 service에서 어떻게 엑티비티에 전달해줘야 하나요? message도 있고 handle도 있던데 어떻게 해야될지 감이 안오네요.

 

그리고 여담으로 카카오톡 같이 톡이오면 알림이 울리는건 어떤 방식으로 구현이 된건가요?

위와 같은 방식이면 스마트폰이 서버와 10초마다 통신을 하는데 이게 사용자가 진짜 많아지면 서버에 부하가 걸리는 방식 아닌가요???
키리링 (840 포인트) 님이 2022년 9월 16일 질문

1개의 답변

+1 추천
 
채택된 답변
10초 간격이므로 이런 건 스케쥴링이라고 봐야할 것 같네요. 스케쥴링을 하는 방법은 여러가지가 있습니다. 최신 깃방법은 WorkManger를 사용하는 것이고,  Timer를 사용할 수도 있구요. 그 외도 샹황에 따라 여러가지 옵션이 있습니다. 모두 개발자 문서와 구글 github에 관련 가이드와 에제 코드가 나옵니다.

구글 검색: Android scheduling
WorkManager:
https://developer.android.com/topic/libraries/architecture/workmanager

그리고 카톡과 같은 알림은 push notification입니다. 관련 내용은 push notifications,  FCM을 찾아보시면 됩니다.파이베이스에 제공하는 서비스입니다.

그리고 scheduling이나 푸시메세지는 안드로이드 버전에 따른 변경사항이 늘 존재하기 때문에 숙련된 개발자들도 관련 문서를 잘 봐야하는 복잡하고 까따로운 부분입니다. 개발자 문서들을 찾으셔서 잘 검토하시길 바랍니다.
spark (227,830 포인트) 님이 2022년 9월 16일 답변
키리링님이 2022년 9월 16일 채택됨
참고로 클라이언트에서 주기적으로 데이터를 가져오는 방법은 polling, 그반대로 서버에서 데이터를 보내주는 방식은 push라고 합니다. 대부분의 겯우는 polling보다는 push가 클라이언트 입장에서는 더 효율적인 방식입니다. push는 반대로 서버쪽에서 갖추어야할 게 많아지구요.
...