当设备连接到电源时,Android 是否对 WakeLock 有不同的行为?
Does Android have a different behavior for WakeLock when the device is connected to power source?
提供一些背景信息:我正在尝试测量 Android 应用中最佳实践的能耗。
我重构了一个使用 WakeLock 来保持屏幕开启的应用程序,我使用标志 FLAG_KEEP_SCREEN_ON
代替。
令人惊讶的是,我只能在能源消耗方面取得非常小的改善。
我原以为 CPU 能够进入低功耗状态,这样会消耗更少的能量。
在这些条件下 CPU 电源管理是否有不同的行为,或者使用此 FLAG 预计不会产生合理的效果?
我正在使用必须连接电源的设备 ODROID-XU 进行测量。 Android 版本是 4.2.2 - API 级别 17.
您没有发现太大差异的原因是
WakeLock
防止设备在屏幕关闭时进入休眠状态,而当您使用 FLAG_KEEP_SCREEN_ON
时,显示器也会与应用程序一起使用电源,相信我,这需要合理的电量。
所以结果几乎相同,而使用 FLAG_KEEP_SCREEN_ON
可能会导致糟糕的用户体验。
对此进行了一些研究并根据之前对该问题的评论,我找到了一个对我来说很清楚的解释。
以下文章解释了应如何使用 WakeLock 以确保在不再需要时正确释放它:
http://vliux.me/android/android-power-consumption-and-wakelock/
作者解释说,唤醒锁的使用不是一件容易的事,很容易出现错误,从而耗尽电池电量。
当我们使用标志 FLAG_KEEP_SCREEN_ON
时,系统 (WindowManager
) 会为我们处理锁。
因此,我们确保 Wakelock 将被正确释放。
此外,如@Dodge所述,使用标志FLAG_KEEP_SCREEN_ON
不需要特殊许可。
以下答案也支持这一点: .
注意:有一个针对不正确的唤醒锁使用的 lint 检查,建议使用 FLAG_KEEP_SCREEN_ON
:在 lint 文档中查找 "Wakelock":http://tools.android.com/tips/lint-checks.
提供一些背景信息:我正在尝试测量 Android 应用中最佳实践的能耗。
我重构了一个使用 WakeLock 来保持屏幕开启的应用程序,我使用标志 FLAG_KEEP_SCREEN_ON
代替。
令人惊讶的是,我只能在能源消耗方面取得非常小的改善。
我原以为 CPU 能够进入低功耗状态,这样会消耗更少的能量。
在这些条件下 CPU 电源管理是否有不同的行为,或者使用此 FLAG 预计不会产生合理的效果?
我正在使用必须连接电源的设备 ODROID-XU 进行测量。 Android 版本是 4.2.2 - API 级别 17.
您没有发现太大差异的原因是
WakeLock
防止设备在屏幕关闭时进入休眠状态,而当您使用 FLAG_KEEP_SCREEN_ON
时,显示器也会与应用程序一起使用电源,相信我,这需要合理的电量。
所以结果几乎相同,而使用 FLAG_KEEP_SCREEN_ON
可能会导致糟糕的用户体验。
对此进行了一些研究并根据之前对该问题的评论,我找到了一个对我来说很清楚的解释。
以下文章解释了应如何使用 WakeLock 以确保在不再需要时正确释放它: http://vliux.me/android/android-power-consumption-and-wakelock/
作者解释说,唤醒锁的使用不是一件容易的事,很容易出现错误,从而耗尽电池电量。
当我们使用标志 FLAG_KEEP_SCREEN_ON
时,系统 (WindowManager
) 会为我们处理锁。
因此,我们确保 Wakelock 将被正确释放。
此外,如@Dodge所述,使用标志FLAG_KEEP_SCREEN_ON
不需要特殊许可。
以下答案也支持这一点: .
注意:有一个针对不正确的唤醒锁使用的 lint 检查,建议使用 FLAG_KEEP_SCREEN_ON
:在 lint 文档中查找 "Wakelock":http://tools.android.com/tips/lint-checks.