使用WakeLock可控制电源状态。比如在玩游戏时不允许屏幕变成DIM或者黑屏,那么只需要在启动游戏的activity的onResume函数中获取wakelock,在退出游戏时的activity的onPause函数中释放wakelock就行。操作方式就是:
private void acquireWakeLock() {
if (wakeLock ==null) {
Logger.d("Acquiring wake lock");
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
wakeLock = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, this.getClass().getCanonicalName());
wakeLock.acquire();
}
}
private void releaseWakeLock() {
if (wakeLock !=null&& wakeLock.isHeld()) {
wakeLock.release();
wakeLock =null;
}
}
那如何查看当前系统的wakelock呢?
1,查看linux 的waklock
PowerManagerService.Display:这是屏开着时PowerManagerService对linux层设的wakelock
PowerManagerService.WakeLocks:这是应用层设的wakelock,所有应用程序的设的wakelock在linux层表现成这个wakelock。PowerManagerService会维护所有应用程序的一个wakelock表,当不为空时,向linux层设置PowerManagerService.WakeLocks,为空时取消这个wakelock。
2,查看应用程序 的waklock
# dumpsys power
除此之外,该命令还可以看到很多其他的系统状态信息和变量,诸如Power Manager State、Settings and Configuration、Screen off timeout、Screen dim duration、Display Controller Locked State、Display Controller Configuration、Display Power State、Display Controller Thread State。
参考原文:
http://www.cnblogs.com/keyindex/articles/1819504.html