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

Background 서비스 질문입니다.

0 추천
안녕하세요.

안드로이드앱 개발중, 백그라운드 서비스에 대해서 궁금한 점이 있어서 글을 남깁니다.

다름이 아니라,

FCM처럼 백그라운드에서 소켓을 돌리려고 하는데..

구글링을 하여 "죽지않는 백그라운드 서비스" 같은 기술을 써도..

10~15분 정도 지나면 해당 백그라운드 서비스가 죽어버려서..난감한 상황 입니다.

이를 해결하기 위한 알고리즘이나, 방법이 있을런지요?

소중한 답변 기다리겠습니다.
lts0606 (190 포인트) 님이 2018년 6월 4일 질문

1개의 답변

0 추천
 
채택된 답변
백그라운드 서비스는 사용자 의사와 상관없이 디바이스의 배터리를 많이 소모시키기 때문에

원칙적으로는 필요한 상황에서만 살아있고 바로 메모리에서 내려오는 것이 안드로이드 정책입니다.

따라서 안드로이드 OS는 서비스 스스로 종료되지 않으면 process 우선순위에 따라

일정시간 이후에 강제로도 서비스를 종료 시킵니다.

이 점을 피하려면 결국 서비스가 실행되는 process의 우선순위를 높여줘야 합니다.

정책적으로 서비스가 실행되는 process의 우선순위를 높이는 방법은

기본적으로 startForeground() API로 notification 영역에 service가 실행되고 있음을 사용자에게 인지시키는 방법입니다.

편법으로는 NotificationListenerService에 binding 시켜놓아도 OS에 의해 process가 kill 되지 않습니다.
디자이너정 (42,810 포인트) 님이 2018년 6월 4일 답변
lts0606님이 2018년 6월 5일 채택됨
비스무리한 소스코드를 구글링해서 사용했는데...17분정도 되니까
백그라운드 서비스로 돌리던 앱이 countDownTimer 활용해서 동작시키는데..onfinish와 함께 죽더라군요..
암튼, 답변 감사합니다.
...