2015-05-17 38 views
2

我正在使用Runtime.exec()从Android应用程序运行本机后台进程。我怎样才能避免android背景过程饥饿?

似乎每隔几秒钟该进程就会进入睡眠200毫秒。
它看起来像android操作系统只是挨饿的过程。

有什么方法可以将进程优先级从后台进程更改为某种其他类型的优先级?

假设正在运行进程的应用程序可以获得超级用户访问权限。

编辑:

命令我使用运行过程:

String fullCommand = "export LD_LIBRARY_PATH=LD_LIBRARY_PATH:. && ./MyProc"; 

Runtime.getRuntime().exec(new String[]{"su", "-c ", fullCommand }); 
+0

你从启动应用程序里面这个过程?你可以发布代码如何启动这个过程? – AADProgramming

+0

几个问题: 1.你确定你的本地运行时具有su权限(不是应用程序)吗? 2.运行时不是为长时间的动作而构建的,你在那里运行的是什么? –

回答

1

如果你知道进程的PID,你可以用renicetaken from this answer)改变其优先级。

您可以致电renice这样的:

renice priority [[-p] pid ...] [[-g] pgrp ...] [[-u] user ...] 
+0

我可能会做错,但这似乎没有效果 –

-1

使用.setPriority()方法正在尝试。

Thread t=new Thread(); 
t.setPriority(Thread.MAX_PRIORITY); 
+0

它作为一个进程运行,有20个线程,看起来像整个进程暂停了200毫秒。所有线程都冻结。 –

+0

这是一个本地进程。不是一个java进程。 –