안드로이드는 사용자에게 보이지 않는 기능들을 구현할 수 있도록 Service를 제공합니다.
서비스는 백그라운드 서비스(Background Service), 포그라운드 서비스(Foreground Service), 바인딩 서비스(Bound Service)로 나눌 수 있습니다.
1. 백그라운드 서비스는 UI의 뒤에서 실행되는 서비스를 말하며 사용자에게 실행 여부가 보이지는 않습니다. 개별의 애플리케이션 구성 요소로 동작하며 앱이 실행 중에는 종료되지 않으나 Background 상태로 진입시 서비스의 동작을 보장하지는 않습니다. 안드로이드의 메모리 정책에 의해 종료될 수 있습니다.
2. 포그라운드 서비스의 동작은 백그라운드 서비스와 동일하게 사용자에게 보이지 않는 서비스를 제공하나 Notification 을 통해 사용자에게 서비스가 실행 중임을 알립니다. Notification 을 노출한다는 단점이 있으나 앱이 실행 중과 더불어 Background 상태로 진입시의 서비스 동작 까지 보장합니다. 음악, 네비게이션 길 안내 등 Background 진입시에도 끊기지 않는 기능 구현에 적합합니다.
3. 바인딩 서비스는 Activity와 연결된 서비스를 말합니다. Activity와 Service간 연결을 위한 통신 기능이며 Background Service와 Foreground Service 모두 적용 가능합니다.
이번 글에는 서비스 구현 중 onStartCommand에 관하여 알아보고자 합니다. onStartCommand는 서비스가 시스템에 의해서 종료되었을 때 재시작 할지 결정하는 flag입니다. onStartCommand의 종류는 다음과 같습니다.
- START_NOT_STICKY
- START_STICKY
- START_REDELIVER_INTENT
1. START_NOT_STICKY
서비스가 시스템에 의해 종료되어도 재시작 하지 않습니다.
2. START_STICKY
서비스가 시스템에 의해 종료되면 재시작합니다. 그러나 종료 전에 사용된 마지막 Intent는 Null로 초기화하여 재시작 합니다.
3. START_REDELIVER_INTENT
서비스가 시스템에 의해 종료되면 재시작하며 종료 전에 보류된 Intent를 모두 순차적으로 전달합니다. 서비스가 지속되어야 하는 파일다운로드에 적합합니다.
'안드로이드' 카테고리의 다른 글
[안드로이드] Recyclerview, ListAdapter 순서 변경 문제 (0) | 2023.04.23 |
---|---|
[안드로이드] SQLite Cursor 사용에 관한 고찰 (0) | 2023.03.23 |
[안드로이드] 애니메이션 Interpolator 에 관하여 (0) | 2021.12.17 |
[안드로이드] Android studio Arctic Fox 버전 이후 gradle allprojects 추가방법 (0) | 2021.11.10 |