Wake lock 설정 및 관리

기기가 일시중지 상태로 전환되기 전에 일부 작업을 완료하기 위해 기기를 실행 중인 상태로 유지해야 하는 경우 wake lock이라는 PowerManager 시스템 서비스 기능을 사용하면 됩니다. wake lock을 사용하면 앱에서 기기의 전원 상태를 제어할 수 있습니다.

wake lock 설정

Wake lock을 사용하려면 먼저 다음과 같이 애플리케이션의 매니페스트 파일에 WAKE_LOCK 권한을 추가합니다.

<uses-permission android:name="android.permission.WAKE_LOCK" />

앱에 특정 작업용 서비스를 사용하는 broadcast receiver가 포함되어 있다면 다음과 같이 wake lock을 직접 설정할 수 있습니다.

Kotlin

val wakeLock: PowerManager.WakeLock =
        (getSystemService(Context.POWER_SERVICE) as PowerManager).run {
            newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "MyApp::MyWakelockTag").apply {
                acquire()
            }
        }

자바

PowerManager powerManager = (PowerManager) getSystemService(POWER_SERVICE);
WakeLock wakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK,
        "MyApp::MyWakelockTag");
wakeLock.acquire();

wake lock 해제

Wake lock을 해제하려면 wakelock.release()를 호출합니다. 그러면 CPU 소유권 주장이 취소됩니다. 배터리 소모를 피하기 위해 앱이 종료되자마자 wake lock을 해제하는 것이 중요합니다.

참고 항목