0

提供一些背景信息:我正在尝试衡量 Android 应用程序中最佳实践的能耗。我重构了一个使用 WakeLock 来保持屏幕开启的应用程序,而我使用了标志FLAG_KEEP_SCREEN_ON。令人惊讶的是,我只能在能源消耗方面有很小的改善。

我期待 CPU 能够进入低功耗状态,这将消耗更少的能量。

在这些情况下 CPU 电源管理是否有不同的行为,或者使用此 FLAG 预计不会产生合理的效果?

我正在使用必须连接到电源的设备 ODROID-XU 进行测量。Android 版本为 4.2.2 - API 级别 17。

4

2 回答 2

0

您没有发现太大差异的原因是

WakeLock防止设备在设备屏幕关闭时进入睡眠状态,而当您使用FLAG_KEEP_SCREEN_ON显示器时也与应用程序一起使用电源,相信我它需要合理的电量。

所以结果几乎是一样的,而使用FLAG_KEEP_SCREEN_ON可能会导致糟糕的用户体验。

于 2016-07-28T11:40:04.483 回答
0

在对此问题进行了一些研究并基于先前对该问题的评论之后,我找到了一个对我来说很清楚的解释。

以下文章解释了应如何使用 WakeLock 以确保在不再需要时正确释放它:http: //vliux.me/android/android-power-consumption-and-wakelock/

作者解释说,使用唤醒锁并不是一件容易的事,而且容易出现可能耗尽电池电量的错误。当我们使用标志FLAG_KEEP_SCREEN_ON时,系统 ( WindowManager) 会为我们处理锁。因此,我们确保唤醒锁将被正确释放。

此外,正如@Dodge 所述,使用该标志FLAG_KEEP_SCREEN_ON不需要特殊权限。

以下答案也支持这一点:https ://stackoverflow.com/a/4376967/1228682 。

注意:对于不正确的唤醒锁使用有一个 lint 检查,建议使用FLAG_KEEP_SCREEN_ON:在 lint 文档中查找“Wakelock”:http ://tools.android.com/tips/lint-checks 。

于 2016-07-28T15:47:29.210 回答