안드로이드 개발을 하다보면 오래걸리는 작업이나 화면을 항상 켜두고 싶을 때가 있는데.. 이럴때 wakelock을 이용하면 된다.
오래걸리는 작업, 예를들면 파싱이나, 대용량 DB를 읽는 과정에 시간이 경과되어 화면이 꺼지면 사용자는 어플이 죽엇다고 인식하기 쉽다. 이러한 오해를 미연에 방지하기 위해서 로딩 메시지를 띄우기도 하지만 화면이 꺼지면 무용지물이다.
따라서 wakelock은 이러한 시점에서 매우 큰 도움을 준다.
wake lock은 cpu, screen, keyboard back light를 제어할 수 있는데, 그 조합이 각각 다르다.
Flag Value | CPU | Screen | Keyboard |
---|---|---|---|
PARTIAL_WAKE_LOCK | On* | Off | Off |
SCREEN_DIM_WAKE_LOCK | On | Dim | Off |
SCREEN_BRIGHT_WAKE_LOCK | On | Bright | Off |
FULL_WAKE_LOCK | On | Bright | Bright |
조합을 확인하고 사용하면 되겠다.
코드를 작성하면서 보면 powermanager를 획득하고, wakelock을 생성해서 등록하고 해제하는 순으로 이용하게 된다.
아래 그림을 보고 소스를 보면 이해를 도울 수 있을 것이다.
1. pm = context.getSystemService(Context.POWER_SERVICE);
2. wl = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "SECUEYE");
3. wl.acquire();
4. do Somethings..
5. wl.release();
2. wl = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "SECUEYE");
3. wl.acquire();
4. do Somethings..
5. wl.release();
Permission
2011.03.06 빠진 부분이 있다고 해서 추가합니다.
Souce code
private static PowerManager pm = null;
private static PowerManager.WakeLock wl = null;
public static void getSystemPowermanager(){
pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
}
public static void getSystemWakelock(){
if( pm != null )
wl = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "SECUEYE");
}
public static void aquire(){
if( wl != null )
wl.acquire();
}
public static void releaseWakelock()
if( wl != null )
{
wl.release();
wl = null;
}
}
Keyword:
screen
keyboard
PowerManager
WakeLock
keyboard
PowerManager
WakeLock
'MISCELLANEOUSNESS' 카테고리의 다른 글
사용기] 장갑끼고 모바일 기기를 조작해야 한다면 Alupen (0) | 2011.01.01 |
---|---|
안드로이드 기기들의 해상도. (0) | 2010.11.26 |
갤럭시S 프로요 이전과 달라진 점[UI] (2) | 2010.11.23 |