앱을 개발하다 보면 "포그라운드", "백그라운드"라는 말을 자주 듣게 됩니다. 기능을 구현할 때 이 둘의 차이를 명확히 이해하는 것이 중요합니다.
산책 기록 앱을 개발하는 중에 사용자가 앱을 꺼도 산책 기록이 중단되지 않고 이어져야 하므로 포그라운드 서비스를 사용하게 되어서 개념을 정리하고자 합니다.
포그라운드란?
"포그라운드(Foreground)"는 사용자가 앱을 현재 실행하고 있는 상태를 말합니다. 예를 들어 스마트폰에서 유튜브 앱을 켜고 영상을 보는 중이라면, 유튜브는 포그라운드 상태입니다.
- 화면에 앱이 표시되고,
- 사용자가 앱과 상호작용하고 있을 때
- 앱의 Activity가 활성 상태(onResume) 일 때
- 시스템 자원을 우선적으로 사용함
이 상태에서는 모든 기능(GPS, 네트워크, UI 등)을 자유롭게 실행할 수 있습니다.
백그라운드란?
"백그라운드(Background)"는 앱은 실행 중이지만, 화면에는 보이지 않는 상태입니다. 예를 들어 인스타그램을 보다가 홈 버튼을 눌러 나가면, 앱은 꺼진 게 아니라 뒤에서 대기 중인 상태입니다.
- 화면에는 보이지 않음
- 알림, 음악 재생, 위치 추적 등 일부 작업 가능
- 배터리 절약 및 리소스 제한 대상
이때 앱의 Activity는 중지되고, Service만 살아 있거나, 앱 프로세스도 OS에 의해 종료될 수 있습니다.
백그라운드에서의 서비스 실행 제한
Android 8.0 (API 26) 이상부터는 백그라운드에서의 일반 서비스 실행이 제한됩니다.
사용자가 앱을 보지 않고 있는 상태에서 몰래 위치를 추적하거나, 오래 동작하는 작업을 하면 안 된다는 정책 때문입니다.
따라서, 필요한 것이 포그라운드 서비스입니다.
Foreground Service
Foreground Service는 알림(Notification)을 띄운 채 실행되는 서비스입니다.
시스템은 이 서비스를 "사용자가 인지하고 있는 중요 작업"으로 간주하고, 백그라운드에서도 종료시키지 않습니다.
간단히 말해, 앱이 백그라운드에서도 계속 작업을 수행하도록 도와주는 기능입니다.
사용자가 앱과 직접 상호작용하지 않을 때에도 작업이 수행 중임을 사용자가 알 수 있어야 하는 경우에만 포그라운드 서비스를 사용합니다. (이때 필수적으로 사용자에게 알림을 표시해야 합니다)
대표 예시
- 네이버 지도: "위치 공유 중"
- 음악 앱: "재생 중 알림"
'개발 | 프로젝트' 카테고리의 다른 글
[Blender] 주요 모드 / 사용법 및 단축키 (0) | 2025.07.01 |
---|---|
코루틴(coroutine)이란? (0) | 2025.06.01 |
쿠키 vs 세션 vs 토큰 (JWT) (0) | 2025.05.02 |
[React Native] 빌드 속도 향상 (캐시화) (0) | 2025.04.29 |
[React Native] 모든 캐시 삭제 / 의존성 재설치 (0) | 2025.04.15 |