피드로 돌아가기
Keeping Android Services Alive Against OEM Battery Aggression
Dev.toDev.to
Infrastructure

OEM 배터리 최적화 제약을 극복한 Foreground Service 및 Watchdog 구조 설계

Keeping Android Services Alive Against OEM Battery Aggression

Haseeb2026년 6월 26일5intermediate

Context

Android OS 및 OEM 제조사의 공격적인 배터리 최적화 정책으로 인한 백그라운드 서비스 강제 종료 문제 발생. 단순 Service 활용 시 화면 꺼짐 이후 수 분 내 프로세스가 소멸하여 위치 기반 및 시간 기반 트리거 동작이 불가능한 한계 노출.

Technical Solution

  • OS 강제 종료 방지를 위해 Notification을 결합한 Foreground Service를 주 실행 구조로 채택
  • Foreground Service 소멸 시 재가동을 위해 15분 주기 JobScheduler를 Watchdog으로 배치한 이중화 구조 설계
  • API 레벨별 AlarmManager 동작 차이와 BatteryManager 제한을 고려한 정밀 시간 계산 로직 구현
  • GeofencingClient의 부정확성을 보완하기 위해 ActivityRecognitionClient를 결합한 하이브리드 위치 감지 체계 제안
  • 프로세스 즉시 소멸 가능성에 대비하여 모든 상태 값을 Local Room DB에 실시간 저장하는 Stateless 지향 설계 적용

- Android 백그라운드 작업 시 OS 문서의 표준 서비스 가이드를 맹신하지 말고 OEM별 특이사항 검토 - 단일 프로세스 의존성을 탈피하고 JobScheduler 등 보조 수단을 통한 Self-healing 메커니즘 구축 - 서비스 강제 종료 시 데이터 유실 방지를 위해 Action 직전 상태의 Local Persistence 저장 로직 구현 - 사용자에게 배터리 최적화 제외 설정의 필요성을 투명하게 설명하여 권한 획득률 제고

원문 읽기