Service란?
서비스는 백그라운드에서 작업을 수행하는 안드로이드의 4대 구성요소 중 하나입니다. 사용자 인터페이스를 제공하지 않습니다. 서비스는 안드로이드 어플리케이션의 구성요소(예를 들어 Activity, Fragment, ..)가 시작할 수 있으며, 이 서비스는 사용자가 다른 어플리케이션을 사용 중에도 백그라운드에서 계속 동작합니다. 즉 서비스를 멈추게 하기 전까지는 멈추지 않고 지속적으로 할 일을 수행하고 있습니다.
Service의 유형
서비스는 크게 3가지 유형으로 나뉠 수 있습니다.
- Foreground Service
- Background Service
- Bound Service
1) Foreground Service
포그라운드 서비스는 사용자에게 눈에 띄는 작업을 수행합니다. 포그라운드 서비스에 상태표시줄에 Notification이 표시되는 형태로 이해하시면 됩니다. 즉 사용자가 현재 서비스가 작업 중임을 인지할 수 있습니다. 예를 들어 멜론이나, 유튜브 뮤직 등을 실행하게되면, 상태표시줄에 현재 재생되고 있는 음악 정보등이 표시됩니다. 다른 앱을 실행하여도 음악은 계속 실행하도록 서비스는 동작하지만, 사용자는 상태표시줄에서 작업이 수행중임을 인지할 수 있는 상태입니다.
2) Background Service
백그라운드 서비스는 사용자에게 직접적으로 보여지지 않는 작업을 수행합니다. 백그라운드 서비스는 사용자가 서비스가 동작하고 있는지 여부를 확인하고 인지할 수 없기에 기기의 성능 저하를 유발하게 됩니다. 그래서 Android API 레벨 26 이상 부터는 앱이 포그라운드에 있지 않을 때 시스템에서 백그라운드 서비스 실행하는 것에 제한을 적용하고 있습니다.
3) Bound Service (바인드된 서비스)
Bind 는 사전적인 의미로 '묶다'를 의미합니다. 그렇다면 바인드된 서비스는 서비스가 어떤 구성요소와 묶여있을 수 있다는 걸로 해석이 가능합니다. 즉 다른 구성요소와 연결이 되어 서비스가 구성요소와 요청, 응답을 주고 받고 IPC 등을 수행할 수 있음을 의미합니다.
Service 기본 사용하기
Service를 생성하려면 Service 클래스를 상속받는 클래스를 생성해야 합니다. 그리고 서비스의 생명주기 처리에 필요한 몇가지 메소드를 재정의해야 합니다. 아래 재정의가 필요한 메소드들 입니다.
- onStartCommand()
- onBind()
- onCreate()
- onDestroy()
'Android > Component' 카테고리의 다른 글
Application Foreground/Backgroud 상태 확인하기 (0) | 2022.06.13 |
---|---|
[Android/Unity] Failed to install the following Android SDK packages as some licences have not been accepted. (0) | 2022.05.07 |
[Android/Unity] 터미널 환경에서 빌드하기 (Ubuntu) (2) | 2022.05.05 |
[Android/Unity] TargetSDK version 31 이상에서 Manifest merger failed 문제 (0) | 2022.05.04 |
[Android] DI, 그리고 Hilt (작성중) (0) | 2022.04.14 |