android PowerManager(电源管理) wakelock(屏幕锁) .
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
android PowerManager(电源管理)wakelock(屏幕锁)
今天在看一个项目的源代码时,发现了这个电源管理和屏幕锁:PowerManager、wakelock。
其中在onStart()方法中获取wakelock,并且在onstop()中将这个lock释放掉。
protected v oid onStart() {
....
pm = (PowerManager) getSy stemServ ice(Context.POWER_SERVICE);
wl = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK |
PowerManager.ACQUIRE_CAUSES_WAKEUP, "MediaCenterApplication");
wl.acquire();
wl.setRef erenceCounted(f alse);
....
}
protected v oid onStop() {
....
wl.release();
....
}
PowerManager和WakeLock的操作步骤
1. PowerManager pm = (PowerManager) getSy stemServ ice(Context.POWER_SERVICE);通
过Context.getSystemService().方法获取PowerManager实例。
2. 然后通过PowerManager的newWakeLock
((int flags, String
tag)来生成WakeLock实例。int Flags指示要获取哪种WakeLock,不同的Lock对cpu 、屏幕、键盘灯有不同影响。
3. 获取WakeLock实例后通过acquire()获取相应的锁,然后进行其他业务逻辑的操作,最后使用release()释放(释放是必须的)。
关于int flags
各种锁的类型对CPU 、屏幕、键盘的影响:
PA RTI A L_W A KE_LOCK:保持CPU 运转,屏幕和键盘灯有可能是关闭的。
SCREEN_DIM_W A KE_LOCK:保持CPU 运转,允许保持屏幕显示但有可能是灰的,允许关闭键盘灯
SCREEN_BRIGHT_W A KE_LOCK:保持CPU 运转,允许保持屏幕高亮显示,允许关闭键盘灯
FULL_WA KE_LOCK:保持CPU 运转,保持屏幕高亮显示,键盘灯也保持亮度
A C QUIRE_C A USES_W AKEUP:Normal wake locks don't actually turn on the illumination. Instead, they cause the illumination to remain on once it turns on (e.g. f rom user activ ity). This f lag will f orce the screen and/or key board to turn on immediately, when the WakeLock is acquired. A ty pical use would be f or notifications which are important f or the user to see immediately.
ON_AFTER_RE LE ASE:f this flag i s set, the user activity timer w ill be reset w hen the WakeLock is released, causing the illumination to remain on a bit longer. This can be used to reduce flicker i f you are cycling between wake lock conditions.
权限获取
要进行电源的操作需要在AndroidManif est.xml中声明该应用有设置电源管理的权限。
android:name="android.permission.DEVICE_POWER"/>