WakeLock使用
我们先来看一下Android官方对PowerManager和WakeLock的注解:
- PowerManager:This class gives you control of the power state of the device.
- WakeLock:A wake lock is a mechanism to indicate that your application needs to have the device stay on.
WakeLock levelAndFlags和使用场景
Level | 保持CPU | 保持屏幕亮 | 保持键盘亮 | 使用场景 |
---|---|---|---|---|
PARTIAL_WAKE_LOCK | 是 | 否 | 否 | 长时间运行的后台服务,例如Service等 |
SCREEN_DIM_WAKE_LOCK | 是 | 低亮度 | 否 | 除非必须保持CPU运行直至运算完成,否则请使用FLAG_KEEP_SCREEN_ON方式 |
SCREEN_BRIGHT_WAKE_LOCK | 是 | 高亮度 | 否 | 除非必须保持CPU运行直至运算完成,否则请使用FLAG_KEEP_SCREEN_ON方式 |
FULL_WAKE_LOCK | 是 | 高亮度 | 是 | 除非必须保持CPU运行直至运算完成,否则请使用FLAG_KEEP_SCREEN_ON方式 |
除了这四个Level之外,PowerMager还提供了两个Flag,可以配合Level使用。
FLAG | 描述 |
---|---|
ACQUIRE_CAUSES_WAKEUP | 默认情况下wake locks并不是马上开启CPU、Screen或者Keyboard的illumination(对于Screen是Dim或Bright,Keyboard是Bright. wake locks只是在被开启后(比如用户的活动),让设备延续(保存)你设定开启的状态. 但是如果加上ACQUIRE_CAUSES_WAKEUP就可以让Screen或Keyboar的illumination没开启的情况,马上开启它们。 典型的应用就是在收到一个重要的notifications时,需要马上点亮屏幕。 |
ON_AFTER_RELEASE | 当wake lock被释放的时候,当前调用wake lock的activity的计数器会被重置,所以屏幕会继续亮一段时间 |
注意:
这两个Flag和PARTIAL_WAKE_LOCK组合是没有作用的。