Wakelock和FLAG_KEEP_SCREEN_ON之间的区别?

时间:2010-12-07 13:08:34

标签: android screen

保持屏幕清醒可以通过使用唤醒锁

来完成
mWakeLock = mPowerManager.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK, 
                getClass().getName());

或者通过将FLAG_KEEP_SCREEN_ON添加到窗口

getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

两者之间在性能和电池寿命方面的技术差异是什么?

3 个答案:

答案 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   |

请参阅wakelockPowerManager了解Android详细信息,以及其他具体实施方案的答案。

答案 2 :(得分:0)

  在后台服务中使用

唤醒锁来保持CPU运行,以便在屏幕关闭时继续工作。你永远不应该使用唤醒   锁定一项活动。要使用唤醒锁定,必须在应用程序的清单文件中添加WAKE_LOCK权限。

  在活动中使用了

FLAG_KEEP_SCREEN_ON 来保持屏幕开启,这也将保持CPU开启而不会有任何特殊情况   许可,不像唤醒锁。你永远不应该使用FLAG_KEEP_SCREEN_ON   在服务中。

干杯!