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

标签 android multithreading service cpu power-management

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

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

我知道不同的操作系统/用户界面(例如 HTC sense)有自己的电源管理策略。但我想知道是否有任何方法可以在不对手机进行 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在线时的governor,ondemand是离线时的governor。 Reference

  1. 我能做些什么来保持 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 .

关于android 在屏幕关闭时保持 cpu 全速运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12610568/

相关文章:

android - 自定义 Google Plus 登录按钮和 Facebook 登录按钮

android - 在不调用适配器上的 notifyItemChanged(int) 的情况下更新 RecyclerView 项目 ProgressBar

ubuntu -/usr/sbin/service 在 Docker 容器下做什么

android - 可以在服务中扩展 XML 布局吗? (安卓)

android - 为什么发布升级会重新安装应用程序并删除内部数据存储?

android - Flutter - 添加导入 'package:path/path.dart' 时出现错误

android - 如何添加边框以填充 ListView 行

java - 在单独的线程中将对象返回到池

ruby - 如何检测 Ruby 线程何时从线程内被杀死

objective-c - OSX/ cocoa : setting up service in menu for right click and services list