Keep Screen On과 WakeLock, Foreground Service가 해결하는 문제가 어떻게 다른지 Android 운영 기준으로 설명합니다. 복잡한 기능 이름보다 먼저 확인할 것은 ‘Keep Screen On’입니다. 사용자가 화면을 보며 작업하는 동안 디스플레이가 꺼지지 않게 하는 UI 요구입니다. 필요한 화면의 생명주기에 맞춰 플래그를 설정하고 해제합니다.
이 글의 범위
실제 경험이나 측정 결과를 가정하지 않고, 공식 문서로 확인 가능한 개념과 적용 순서를 일반 가이드로 설명합니다. 제품 버전과 서비스 정책은 바뀔 수 있으므로 적용 전 연결된 공식 문서를 다시 확인하세요.
판단의 출발점
Keep Screen On, WakeLock, Foreground Service는 이름이 비슷한 지속성 문제를 다루지만 보호하는 대상과 정책이 다릅니다. ‘Keep Screen On’에서 시작해 ‘WakeLock’와의 경계를 정하면 구현할 범위와 실패했을 때 확인할 지점을 구분하기 쉬워집니다.
세 기능이 해결하는 서로 다른 문제
Keep Screen On
사용자가 화면을 보며 작업하는 동안 디스플레이가 꺼지지 않게 하는 UI 요구입니다. 필요한 화면의 생명주기에 맞춰 플래그를 설정하고 해제합니다.
WakeLock
화면과 별개로 CPU 등 특정 전원 상태를 잠시 유지하는 저수준 수단입니다. 범위를 최소화하고 반드시 해제 경로를 둬야 합니다.
Foreground Service
사용자가 인지해야 하는 장기 실행 작업을 알림과 함께 수행하는 서비스입니다. 플랫폼이 허용한 유형과 시작 조건을 따라야 합니다.
WorkManager
즉시 계속 실행보다 조건이 충족될 때 결국 끝나야 하는 지속 작업에 적합합니다. 재시도와 시스템 스케줄링을 활용합니다.
사용자 통제
장기 작업은 진행 상태와 중지 방법을 제공하고 배터리 영향이 기능 가치에 비례하는지 검토해야 합니다.
| 화면 꺼짐 방지와 Foreground Service를 구분하는 기준 핵심 판단 흐름 설명용 개념도 |
그림 1. 화면 꺼짐 방지와 Foreground Service를 구분하는 기준의 핵심 판단 순서를 정리한 설명용 개념도입니다. 실제 서비스 화면, 운영 로그 또는 측정 결과가 아닙니다.
같은 해결책처럼 쓰면 생기는 문제
- 화면 꺼짐 방지를 위해 Foreground Service를 시작하기
- 서비스가 있으면 CPU가 항상 깨어 있다고 가정하기
- WakeLock을 획득하고 예외 경로에서 해제하지 않기
- 사용자가 모르는 장기 작업을 알림 없이 지속하기
필요한 API를 고르는 질문 순서
- 사용자가 지금 화면을 보고 있어야 하는 기능인지 묻습니다.
- 화면이 없어도 즉시 계속 실행돼야 하는 사용자 인지 작업인지 확인합니다.
- 지연돼도 결국 완료되면 되는 작업은 WorkManager를 검토합니다.
- WakeLock이 필요하면 가장 짧은 범위와 타임아웃을 정의합니다.
- 화면 종료·앱 전환·재부팅·배터리 제한 조건에서 실제 동작을 테스트합니다.
운영 전 빠른 점검
| 확인 항목 | 질문 |
|---|---|
| 첫 기준: Keep Screen On | 변경 전에 전제와 목적을 확인했는가? |
| 분리 대상: WakeLock | 다른 책임과 섞이지 않게 경계를 정했는가? |
| 피할 패턴: 화면 꺼짐 방지를 위해 Foreground Service를 시작하기 | 본문에서 경고한 패턴이 남아 있지 않은가? |
| 오류와 복구 | 정상 경로뿐 아니라 실패와 되돌리기도 확인했는가? |
마무리
Keep Screen On, WakeLock, Foreground Service는 이름이 비슷한 지속성 문제를 다루지만 보호하는 대상과 정책이 다릅니다. 사용자 화면, 즉시 실행, 완료 보장 중 무엇이 필요한지 먼저 정하면 과도한 배터리 사용과 정책 위험을 줄일 수 있습니다.
댓글 없음:
댓글 쓰기