안녕하세요 열코입니다.

안드로이드 앱 개발 중 알림 기능을 구현하는 도중 휴대폰이 꺼져있는 상태에서

알림이 발생하면 화면을 깨우는 기능이 필요하여 검색하는 도중

안드로이드에서 제공하는 WakeLock에 대해 알게되었고 이에 대한 내용을 정리했습니다.

WakeLock은 PowerManger 클래스의 메소드이며 앱이 항상 켜져있음을 나타내는 메커니즘입니다.

그러면 이제 WakeLock을 사용하는 방법에 대해 알아보겠습니다.


안드로이드 기능 WakeLock을 사용하기 위해서는 안드로이드 권한을 얻어야합니다.


※ WakeLock 기능 사용을 위해 안드로이드 권한 얻는 법

WakeLock 권한을 얻는 방법은 간단합니다.

AndroidManifest.xml에 다음과 같은 코드를 추가합니다.

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




안드로이드에게 WakeLock 권한을 얻었으니 이제 사용하러 가야겠죠?

MainActivity로 갑니다.

WakeLock을 사용하기 위해 PowerManager와 WakeLock객체를 선언해야합니다.

WakeLock을 사용하려는 코드쪽이나 클래스 상단부분에 다음과 같이 선언합니다.


PowerManager powerManager;

PowerManager.WakeLock wakeLock;


그리고 WakeLock을 사용하려는 코드쪽이나 onCreate 클래스내에 다음과 같이 정의합니다.


powerManager = (PowerManager)getSystemService(Context.POWER_SERVICE);

wakeLock = powerManager.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP | PowerManager.ON_AFTER_RELEASE, "WAKELOCK");


WakeLock 객체 정의 부분에 newWakeLock 함수의 매개변수에 대한 설명입니다.


PowerManger.SCREEN_BRIGHT_WAKE_LOCK : CPU와 화면을 밝게하며 키보드는 off 상태입니다.

(여기서 화면을 살짝 어둡게 키기위해서 PowerManger.DIM_WAKE_LOCK을 사용할 수도 있습니다.

또한 CPU만 On시키기 위해 PowerManger.PARTIAL_WAKE_LOCK을 사용하기도 합니다.)

PowerManger.ACQUIRE_CAUSES_WAKEUP : WakeLock에게 조명이 켜지도록 합니다.

PowerManger.ON_AFTER_RELEASE : WakeLock이 Release되고 조명이 오래 유지되도록 합니다.


자 이제 WakeLock을 사용하기 위한 모든 준비가 끝났습니다.

WakeLock을 사용하려는 코드쪽으로 이동해서 다음과 같은 코드를 추가합니다.


wakeLock.acquire(); // WakeLock 깨우기

wakeLock.release(); // WakeLock 해제



위와 같이 acquire() 함수를 통해 잠들어있는 단말기를 깨울 수 있습니다.

여기서 바로 release() 함수를 통해 WakeLock을 해제해줍니다.

WakeLock을 사용하는 순간 단말기에 많은 배터리가 지속해서 소모하기 때문에 WakeLock이

더이상 필요없는 시점에 최대한 빨리 release() 작업을 수행하는것이 바람직합니다.

그렇기 때문에 단말기를 깨운 직후 바로 WakeLock을 해제해주는 것입니다.


또한 acquire() 함수에 long 형식의 매개변수를 추가함으로써 WakeLock을 해제하기 전까지

시간제한(milisecond 단위)을 지정할 수도 있습니다.


또한 안드로이드 WakeLock에 대해 더 궁금하신 사항은 여기를 확인하세요.



이상 '안드로이드 WakeLock'에 대해 알아보았습니다.

질문 또는 오타나 잘못된 정보가 있는 경우 댓글로 달아주세요!

공감♡ 버튼을 눌러주시면 더욱 유용하고 좋은 포스팅으로 찾아 뵙겠습니다.




to Top