반응형
백그라운드 서비스란?
백그라운드 서비스는 사용자가 앱을 사용하지 않을 때에도 실행되는 작업을 의미합니다.
즉, 앱이 화면에 표시되지 않거나 사용자와 상호작용하지 않는 상태에서도 실행됩니다.
이런 서비스는 주로 백그라운드 작업, 장시간 실행되는 비시각적 작업에 사용됩니다.
주요 예시
- 클라우드 동기화: 서버와 데이터를 주기적으로 동기화
- 로컬 데이터베이스 유지 관리
- 로그 데이터 저장 및 전송
- 특정 조건에서 알림 전달
백그라운드 서비스의 실행 방식
백그라운드 작업을 수행하기 위한 주요 메커니즘은 다음과 같습니다.
1) WorkManager
- 장기간 실행되거나 연기될 수 있는 작업을 처리하는 데 적합
- 시스템 리소스(배터리, 네트워크 상태 등)에 따라 작업 실행을 최적화
- 데이터 동기화, 주기적인 배치 작업에 권장
2) JobScheduler
- API 21(Lollipop) 이상에서 사용 가능
- 네트워크 연결, 충전 상태 등 특정 조건이 충족되었을 때 실행
- 조건 기반 백그라운드 작업에 적합
3) Service
- Service는 백그라운드에서 직접 작업을 실행할 수 있는 기본 컴포넌트
- Android 8.0(Oreo) 이상부터 앱 실행 제한 정책으로 인해 직접적인 사용은 감소
- 반복 작업이나 WorkManager로 대체하는 것이 권장됨
Android의 제약
안드로이드는 배터리 소모를 줄이고 사용자의 경험을 개선하기 위해 백그라운드 작업을 제약합니다.
주요 제약 조건
- 백그라운드 실행 제한 (Android 8.0 이상)
- Doze 모드
- 앱 Standby Bucket
- 권한 관리 강화 (Android 11 이상)
백그라운드 서비스의 장단점
장점
- 사용자와 직접 상호작용하지 않으면서도 필요한 작업 처리 가능
- 시스템 자원을 상대적으로 적게 사용
단점
- Android 정책으로 인해 장시간 실행이 제한
- 제약을 우회하기 위해 WorkManager 등 별도의 API 사용 필요
포그라운드 서비스와의 차이점
백그라운드 서비스와 포그라운드 서비스는 안드로이드의 Service 클래스를 기반으로 하지만, 동작 방식과 목적이 다릅니다.
특성 | 백그라운드 서비스 | 포그라운드 서비스 |
실행 환경 | 사용자와 상호작용하지 않는 상태에서 실행 | 항상 사용자에게 표시됨 |
목적 | 배터리 효율성을 우선으로 한 작업 처리 | 실시간으로 중요한 작업 수행 |
알림(Notification) | 필요 없음 | 반드시 알림 표시 필요 |
사용 사례 | 데이터 동기화, 배치 작업 | 음악 재생, GPS 네비게이션, 다운로드 진행 표시 |
실행 제약 | Android 8.0 이상에서 실행 제한 존재 | 실행 시간에 제한 없음 |
반응형
'Android > platform' 카테고리의 다른 글
[Android] 백그라운드 작업 처리 : Coroutines 와 WorkManager 비교 (0) | 2025.04.16 |
---|---|
[Android] WorkManager로 백그라운드 작업 처리 (0) | 2025.04.16 |
[Android] 바인딩 서비스 (Bound Service) 란? 포그라운드 서비스와의 차이점 (1) | 2024.12.02 |
[Android] 포그라운드 서비스(Foreground Service) 개요 및 구현 방법 (1) | 2024.11.29 |
[Android] startActivityForResult() 대신 registerForActivityResult() 사용하는 방법 (0) | 2024.11.27 |