在安卓系统中如何更改进程优先级

12
如何更改Android中的进程优先级?我已经在Android文档中找到了进程描述和优先级描述。 进程和线程描述 进程优先级 但是我没有找到任何通过某种方法更改进程优先级的内容。
附注:我需要这个来测试与进程优先级相关的应用程序特定功能,它不会在程序中使用。
我唯一能想到的方法是尝试通过importance字段更改优先级,但我想这是一个坏主意。

我认为你是正确的,你只能在线程上设置优先级,并不能保证你设置的优先级总是会被应用。Android操作系统根据需要来确定。 - kosa
你为什么认为使用 importance 字段是一个坏主意?似乎将 importance 字段设置为最相关的任何常量都会改变进程的优先级。此外,如果您想更精细地调整过去给定的常量级别,可以使用 Iru 字段。 - ocross
我认为这是一个不好的想法,因为改变系统设置的字段值并不是一个好的做法。 - user881259
我不确定这是否普遍,但你可以在设置的开发者选项中找到“显示CPU使用情况”。这不会告诉你进程优先级是什么,但它会让你了解进程之间的行为关系。 - lindhe
3个回答

8
如何在Android中更改进程优先级?
在未经root的设备上,你不能更改进程优先级,即使在root的设备上,也只能临时修改。进程优先级是由操作系统管理的。如果你的应用程序在前台运行,它将以前台优先级运行。如果你的应用程序不在前台,则不会以前台优先级运行。
我需要这个来测试应用程序的某些与进程优先级相关的功能,它不会在程序中使用。
那就测试一个在前台的进程和一个不在前台的进程。
我唯一想到的办法是尝试通过重要性字段更改优先级,但我认为这是一个不好的主意。
更改该数字不太可能产生影响。RunningAppProcessInfo是一个输出结构,不是通过该结构报告的任何内容的更改手段。

1
这不是问题的答案。 - Glenn Maynard
@GlennMaynard:已编辑。 - CommonsWare

1

setpriority()getPriority()在本地代码中存在,因此我们可以从本地代码中设置优先级。但是,我不确定它是否会被操作系统生效或忽略。


1

这只适用于已经获取了 Root 权限的设备:

使用终端,输入以下命令以获取 root 权限:

    su

然后从top的输出中选择进程ID。
    top -n 1 -m 10

在PID列中查找并重新设置进程(在此示例中将PID 1825设置为优先级0),您要进行的操作。

    renice 0 1825

就这些。请记住,操作系统会在一段时间后覆盖此更改,当操作系统认为有必要提高进程优先级时。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接