👉 문제
- Foreground Service를 적용해도 실행 중에 화면이 꺼지거나(절전 모드) 하면 타이머가 정상적으로 작동하지 않음
👉 문제 원인 및 해결 방안
- 문제 : Foreground Service를 적용해도 실행 중에 화면이 꺼지거나(절전 모드) 하면 타이머가 정상적으로 작동하지 않음
- 절전 모드로 전환되어서 어플이 중단되는 걸로 추측
- ⇒ WakeLock을 적용해서 장치가 절전 모드로 전환되는 것을 방지
👉 WakeLock이란?
- 앱이 장기 실행 작업을 처리해야 할 때, 장치가 자동으로 절전 모드로 전환되는 것을 막음
- 예를 들면, 파일 다운로드, 위치 추적, 대량의 데이터 처리 등
- 백그라운드에서 실행되는 서비스나 프로세스가 중단되지 않고 작업을 완료할 수 있도록 보장
👉 적용한 코드
@Override
public void onCreate() {
super.onCreate();
createNotificationChannel();
acquireWakeLock();
}
private void acquireWakeLock() {
PowerManager powerManager = (PowerManager) getSystemService(Context.POWER_SERVICE);
wakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK,
"TimerService::Lock");
wakeLock.acquire();
}
@Override
public void onDestroy() {
super.onDestroy();
if (wakeLock != null && wakeLock.isHeld()) {
wakeLock.release();
wakeLock = null;
}
if (countDownTimer != null) {
countDownTimer.cancel();
countDownTimer = null;
}
}