android在屏幕关闭时保持cpu全速运行

Posted

技术标签:

【中文标题】android在屏幕关闭时保持cpu全速运行【英文标题】:android keep cpu running at full speed while screen is off 【发布时间】:2012-09-26 21:17:34 【问题描述】:

我创建了一个应用程序,通过在多部手机上运行相同的任务来比较 android 手机的 cpu 速度。我注意到在 HTC ONE X 上,如果我关闭屏幕,它会变得慢得多,而在另一部手机上做同样的事情时它不会改变。在程序中,我将任务放在一个服务中,并在一个单独的线程中运行,优先级设置为最高值 10。

我尝试使用部分唤醒锁在屏幕关闭时保持 CPU 运行。但就速度而言,它没有任何区别。

我了解不同的操作系统/用户界面(例如 HTC 感觉)有自己的电源管理策略。但是我想知道是否有任何方法可以在不root手机的情况下克服它,意味着保持cpu以100%的时钟频率运行?

更新:最近的实验表明,当屏幕关闭时,One X(带 ICS)会降低其 CPU 频率并禁用多核功能,Galaxy Nexus(带 ICS)会降低约 25% 的性能,Nexus 7 会大部分时间会降低大约 25% 的性能(有时它可以在屏幕关闭时以最高速度运行)。

【问题讨论】:

【参考方案1】:
    为什么唤醒锁不起作用?

对于 Qualcomm 设备,CPU 的热插拔是由一个名为 mpdecision 的程序处理的。 mpdecision 文件作为供应商可执行文件在我们的系统中运行,它的作用是控制 CPU 的调控器。 mpdecision 定义 cpu1 的性能,每次屏幕关闭时都会执行该文件,因此 cpu1 脚本是无用的,因为 mpdecision 文件将 cpu1 调控器设置覆盖为 userspace ondemanduserspace 是调控器当 cpu1 在线时,ondemand 离线时。 Reference

    有什么办法可以让 CPU 不降低其频率吗?

你需要停止mpdecision,然后你才能保持CPU频率。但是,停止mpdecision 需要root 权限。所以我认为没有root权限是无法保持CPU频率的。

您可以向/sys/devices/system/cpu/cpu0/online 写入值来打开或关闭CPU 的核心,向/sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed 写入值来设置每个核心的频率。我在 Nexus 4 中尝试了这种方法,效果很好。

更多详情可以查看this。

【讨论】:

感谢您的回复!但我的问题是为什么唤醒锁不起作用并且没有 root 设备,我可以做些什么来保持 CPU 不降低其频率? 谢谢!这是非常有用的信息。我找到了更多关于 mpdecision 的描述,我会在你的答案中添加它们。

以上是关于android在屏幕关闭时保持cpu全速运行的主要内容,如果未能解决你的问题,请参考以下文章

Android 使用Wake Lock

管理Android设备的唤醒状态

屏幕关闭时识别音量按钮按下 Android

如何在 Flutter 中保持屏幕关闭的视频播放?

android保持服务不休眠(持续运行)以及唤醒屏幕的方法

在 Android 中切换应用时保持视频通话应用运行