保持屏幕清醒可以通过使用唤醒锁
来完成mWakeLock = mPowerManager.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK,
getClass().getName());
或者通过将FLAG_KEEP_SCREEN_ON添加到窗口
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
两者之间在性能和电池寿命方面的技术差异是什么?
答案 0 :(得分:41)
唤醒锁可让您获得更多控制权(例如,在不关闭屏幕的情况下唤醒手机下载内容)并要求您的应用程序保留唤醒锁许可。
因此,如果您只想在窗口可见时保持屏幕开启,则建议使用FLAG_KEEP_SCREEN_ON
。
答案 1 :(得分:3)
Wakelock
含糊不清,因为它有很多不同的选择。标志FLAG_KEEP_SCREEN_ON
只能这样做。
| Flag Value | CPU | Screen | Keyboard |
-----------------------------------------------------
| PARTIAL_WAKE_LOCK | On* | Off | Off |
| SCREEN_DIM_WAKE_LOCK | On | Dim | Off |
| SCREEN_BRIGHT_WAKE_LOCK | On | Bright | Off |
| FULL_WAKE_LOCK | On | Bright | Bright |
请参阅wakelock或PowerManager了解Android详细信息,以及其他具体实施方案的答案。
答案 2 :(得分:0)
在后台服务中使用唤醒锁来保持CPU运行,以便在屏幕关闭时继续工作。你永远不应该使用唤醒 锁定一项活动。要使用唤醒锁定,必须在应用程序的清单文件中添加WAKE_LOCK权限。
在活动中使用了FLAG_KEEP_SCREEN_ON 来保持屏幕开启,这也将保持CPU开启而不会有任何特殊情况 许可,不像唤醒锁。你永远不应该使用FLAG_KEEP_SCREEN_ON 在服务中。
干杯!