https://developer.android.com/guide/components/fundamentals#Components
요약
- 서비스는 앱을 백그라운드에서 유지시키기 위해 사용하는 진입점(entry point)이다.
- 대표적인 예: 음악 재생과 파일 다운로드
- Started Services : 작업이 왼료될 때까지 실행되는 서비스
- Bounde Services : 다른 앱에게 백그라운드에서 서비스를 제공하는 서비스
- 라이브 배경화면, 알림 리스너, 화면 보호기, 입력 방법 등 시스템에서 바인딩 하는 서비스들.
본문
서비스는 어떠한 이유가 되었던
앱을 백그라운드에서 계속 유지시키기 위해 사용하는
(모든 앱들이 사용할 수 있는) 범용 목적의 진입점 이다.
오랫동안 실행하는 작업(ex: 음악 재생) 또는 원격 프로세스(ex: 파일 다운로드) 등의
사용자 UI 없이 동작하는 작업에 사용 할 수 있다.
실행중인 서비스에 바인딩을 하여 액티비티와 상호작용 할 수 있다.
시스템에서는 started service, binding service 2가지 서비스 사용 방법을 제공한다.
Started services는
작업이 완료될 때까지 계속 실행되도록
시스템에 요청한다.
백그라운드에서 파일 동기화를 하거나, 음악을 재생하는 도중
사용자가 앱을 나가는 상황을 들 수 있다.
백그라운드에서 파일을 동기화 하거나, 음악을 재생하는 경우
같은 started service를 사용하더라도
(시스템이 다르게 처리하는) 다른 유형으로 구현 한다.
- 음악 재생은
사용자가 곧 바로 인지하고 있는 것이다.
그리고 앱은
이 서비스가 포그라운드에서 동작하길 원함을 시스템에 알리고,
사용자에게 앱이 실행중이라는 notification을 나타낸다.
서비스가 종료되면 나쁜 경험을 주기 때문에,
시스템이 서비스가 계속 동작할 수 있도록
우선순위를 유지하도록 한다. - 일반적인 백그라운드 서비스는 사용자가 인지하지 못한다.
이는 시스템이 좀더 쉽게 서비스를 관리 할 수 있음을 의미한다.
좀더 중요한 작업을 위해 RAM이 필요할 경우
서비스를 kill 할 수 있으며,
얼마 후 재시작 할 수 있다.
Bound services는
다른 앱이 서비스를 사용하고 싶을 때 사용.
(내 서비스를 다른 앱들도 사용 할 수 있게 만들 수 있다. ex)음악재생, 백신.. )
바운드 서비스는 다른 프로세스에 API를 제공하고
시스템은 이 프로세스간에 종속성이 있음을 인지한다.
따라서 프로세스 A 가 B프로세스의 서비스 에 바인딩 된 경우
시스템은 두 프로세스가 함께 유지되어야 한다는 것을 알게 된다.
나아가 시스템은
사용자가 A를 중요하게 다룬다면
B 또한 중요하게 취급되어야 한다는
것을 알고 있다.
서비스는 유연성이 뛰어나
모든 종류의 higher-level system concepts에 유용한
빌딩 블록 이다.
라이브 배경화면, 알림 리스너, 화면 보호기, 입력 방법, 접근성 서비스
및 기타 여러 핵심 시스템 기능은 모두 애플리케이션이 구현하고
시스템이 실행될 때 바인딩하는
서비스로 빌드 됨.
서비스 구현시에는 Service.class를 상속해야 함.
Note: 안드로이드 5.0(API level 21) 이상이라면,
스케줄 관련 작업은 JobScheduler 사용 권함
JobScheduler는
Doze API를 사용하여 작업을 최적으로 예약하여
전력 소비를 줄이는 이점을 가진다.
'안드로이드 가이드 > 기본 개념' 카테고리의 다른 글
[안드로이드] 기본 개념 - 컨텐트 프로바이더(Content Provider) (0) | 2024.11.30 |
---|---|
[안드로이드] 기본 개념 - 브로드케스트 리시버(Broadcast receivers) (0) | 2024.09.27 |
[안드로이드] 기본 개념 - 액티비티(Activities) (0) | 2024.09.12 |
[안드로이드] 기본 개념(Application fundamentals) (0) | 2024.08.08 |