Android PowerManager 之一 初识

综述

PowerManager 类主要对当前设备的电源进行管理;通过改API的使用,我们可以显示的获得对电源的控制权,换句话说,设备电池的电量必然会收到显著的影响。通常情况下,不建议直接使用PowerManager.WakeLock,即便是使用也要遵循最小粒度原则并且及时的释放申请的WakeLock

使用

可以通过Context.getSystemServie()来获得PowerManager的实例;常用的API其实是newWakeLocknewWakeLock用于创建PowerManager.WakeLock对象;我们可以通过WakeLock对象相关方法来对设备电源进行控制。常见的代码如下所示:

PowerManager pm = (PowerManager)
getSystemService(Context.POWER_SERVICE);
 PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "My Tag");
 wl.acquire();
   //..screen will stay on during this section..
 wl.release();

级别

PowerManager定义了如下级别,与之对应的就是不同的电源控制全;这些级别都是互斥的,同一时刻只能使用一种

FlagValueCPUScreen Keyboard
PARTIAL_WAKE_LOCKOn*OffOff
SCREEN_DIM_WAKE_LOCKOnDimOff
SCREEN_BRIGHT_WAKE_LOCKBrightOff
FULL_WAKE_LOCKOnBrightOff

在申请了PARTIAL_WAKE_LOCK 的wake lock之后,此时不论设备设置的timeout是多少,或者屏幕手动的使用power按键灭屏,CPU都会处于运行状态。项对比其他类型的wake lock而言,可以通过power按键让设备进入到休眠模式。

通常情况下,我们可以讲如下的flag同wake lock搭配使用已达到控制屏幕、控制何时休眠的目的PARTIAL_WAKE_LOCK除外

Flag ValueDescription
ACQUIRE_CAUSES_WAKEUPNormal wake locks don’t actually turn on the illumination. Instead, they cause the illumination to remain on once it turns on (e.g. from user activity). This flag will force the screen and/or keyboard to turn on immediately, when the WakeLock is acquired. A typical use would be for notifications which are important for the user to see immediately.
ON_AFTER_RELEASEIf this flag is set, the user activity timer will be reset when the WakeLock is released, causing the illumination to remain on a bit longer. This can be used to reduce flicker if you are cycling between wake lock conditions.

当然要想使用WakeLock还得有权限android.permission.WAKE_LOCK

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值