一、wakelock的使用例子
在onStart()方法中获取wakelock,并且在onstop()中将这个lock释放掉。
protected void onStart() {
....
pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
wl = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP, "MediaCenterApplication");
wl.acquire();
wl.setReferenceCounted(false);
....
}
protected void onStop() {
....
wl.release();
....
}
二、WakeLock的使用步骤:
1、PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);通过 Context.getSystemService().方法获取PowerManager实例。
2、然后通过PowerManager的newWakeLock
((int flags, String tag)来生成WakeLock实例。int Flags指示要获取哪种WakeLock,不同的Lock对cpu 、屏幕、键盘灯有不同影响。
3、获取WakeLock实例后通过acquire()获取相应的锁,然后进行其他业务逻辑的操作,最后使用release()释放(释放是必须的)。
三、关于PowerManager的newWakeLock的第一个参数int flags:
PARTIAL_WAKE_LOCK:保持CPU 运转,屏幕和键盘灯有可能是关闭的。
SCREEN_DIM_WAKE_LOCK:保持CPU 运转,允许保持屏幕显示但有可能是灰的,允许关闭键盘灯
SCREEN_BRIGHT_WAKE_LOCK:保持CPU 运转,允许保持屏幕高亮显示,允许关闭键盘灯
FULL_WAKE_LOCK:保持CPU 运转,保持屏幕高亮显示,键盘灯也保持亮度
ACQUIRE_CAUSES_WAKEUP:一旦有请求锁时强制打开Screen和/或keyboard light
ON_AFTER_RELEASE:在释放锁时reset activity timer
四、权限获取
要进行电源的操作需要在AndroidManifest.xml中声明该应用有设置电源管理的权限。
<uses-permission android:name="android.permission.WAKE_LOCK"/> ,
<uses-permission android:name="android.permission.DEVICE_POWER"/>