개요
안드로이드 시스템은 사용자의 interaction이 없을때 화면이나 키보드 조명을 차단,
sleep이후 일정 시간이 지나면 wifi네트워크도 끊고, cpu까지 잠재워버리는 배터리 절약정책을 쓰고있다
그러나,
-위 정책에 협조하지 않는 app 존재 (동영상플레이어, 네비게이션 등 백그라운드 작업을 하는 앱들은 화면이 꺼지더라도 cpu를 동작해야한다. )
이러한 예외적인 경우에 사용하는 방법이 powermanger와 powermanager.WakeLock
powermanager: device의 전원상태를 제어할수 있게 도와준다. 사용할때 주의해서 쓰기
01.단말 배터리 사용시간은 powermanager의 api사용에 따라 현저한차이를 나타낸다.
02.반드시필요한경우에만 wakelocks을 acquire
03.가장 낮은레벨을 사용하고 사용후 반드시 release
[사용방법]
PowerManager.WakeLock wakeLock = pm.newWakeLock( PowerManager.SCREEN_DIM_WAKE_LOCK, "MY TAG" );
wakeLock.acquire();
// do something.
// the screen will stay on during this section.
wakeLock.release();
[레벨 종류]
PARTIAL_WAKE_LOCK
SCREEN_DIM_WAKE_LOCK
SCREEN_BRIGHT_WAKE_LOCK :cpu on, screen bright, kebord off
FULL_WAKE_LOCK
ACQUIRE_CAUSES_WAKE_UP 보통의 WAKE_LOCK 은 켜진 화면을 계속 유지하게는 하지만, 꺼진 화면을 강제로 켜지는 않습니다. 하지만 이 Flag 가 함께 사용된다면, WakeLock이 acquire() 되는 순간 Screen 과 Keyboard 가 바로 켜집니다. 보통 긴급한 notification (착신전화, 알람) 등이 있을 때 주로 사용됩니다.
<uses-permission android:name="android.permission.WAKE_LOCK"/> : 퍼미션 허용
참고블로그
'안드로이드' 카테고리의 다른 글
Burn-in ? (0) | 2021.06.22 |
---|---|
Service 란? (0) | 2021.06.03 |
안드로이드 생명주기 (0) | 2021.03.03 |
리사이클러뷰 리스트에 sqlite 값 뿌려주기 (0) | 2021.03.02 |
ConText (0) | 2021.02.05 |