-
[원격제어 서비스 준비 2-1편] Foreground Service란회사 생활/모바일 원격제어 서비스 2023. 12. 20. 11:49
Webrtc의 화면 공유를 진행하기 위해서는 먼저 유저에게 화면 공유에 대한 동의를 받고 유저에게 현재 화면 공유를 진행하고 있다는 표시를 해줘야 한다. 이때 사용하는 것이 Foreground Service다.
Webrtc 사용전 유저에게 화면 공유에 대한 허락을 받은 후 Foreground가 실행되고 있지 않다면 앱에 오류가 걸려서 나가진다.
Foreground Service는 Service를 상속받아 구현한다. Service의 전반적인 지식을 알고 넘어가면 좀 더 이해하기 쉬울 것이다. (링크)
포그라운드(foreground) 서비스 :
- 포그라운드 서비스는 사용자에게 보여줘야 하는 작업을 수행 (오디오 앱 - 노래 재생)
- 어플리케이션이 종료되어도, 다른 앱 사용중에도 실행되고 있다. (명시적으로 종료해주지 않는다면 거의 종료 되지 않는다.)
- 포그라운드 서비스는 알림 표시해야 합니다.
- 예제 : 오디오앱, 사용자의 달리기를 기록하는 피트니스 앱(물론 퍼미션 필요), 파일 다운로드 등등
Service는 생명주기를 따로 가지고 있기 대문에 어떤 Activity나 Fragment가 종료 된다고 해도 실행되고 있으며
특히 Foreground Service는 명시적으로 종료해주지 않느다면 계속 켜져있을 것이다. (다른 Service는 메모리 상황에 따라 종료될수도 있음)
파일을 다운 받거나 음악 앱들이 노래가 켜져있을때처럼 사용자 눈에 띄어아 햐는 특정 작업을 진행해야 할 경우 Foreground Service와 함께 알림을 표시해야한다.
이러한 특성때문에 Webrtc를 실행시키면 설령 Webrtc를 수행하던 앱을 나간다고 하더라도 계속 화면 공유는 진행되는 것 같다.
Foreground Service와 Background Service와의 차이점 :
만약 Service가 background에서 계속 수행되게 된다면, 스마트폰의 메모리 상황에 따라 메모리가 부족하다면 안드로이드 시스템에 의해서 무작위로 종료 당할 수도 있다.
반면에 Foreground Service 는 활성화된 Activity 와 동급의 우선순위를 가집니다. 그래서 메모리가 부족하더라도 안드로이드 시스템 의해 종료될 확률이 적다.
Foreground Service는사용자에게 현재 해당 Service가 켜져있음을 알림을 통해 알려준다는 특성을 갖는다.
그래서 제 추측으로는 이미 사용자가 서비스의 사용을 알고 있기 때문에 Background Service에 비해 우선 순위가 높은 것 같다.
정리:
알림 중요도 / 메모리 없을때 종료 가능성 Foreground Service O 높음 / 거의 없음 Background Service X (비교적) 낮음 / 있음 '회사 생활 > 모바일 원격제어 서비스' 카테고리의 다른 글
[원격제어 서비스 준비 2-2편] Foreground Service 코드 (0) 2023.12.20 [원격제어 서비스 준비 1-2편] WebSocket 코드 (1) 2023.12.08 [원격제어 서비스 준비 1-1편] WebSocket이란? (0) 2023.12.04 안드로이드 화면 공유 및 원격 제어 (WebRTC + Accessibility Service) (1) 2023.11.27 AccessibilityService API (접근성 권한) (0) 2023.05.31