我试图在android上编写一些后台服务,现在我已经创建了自己的线程池来处理它们。
服务正在一台可能让游戏处于前台的机器上运行,我希望游戏优先于系统资源。
有没有办法让线程池意识到系统的空闲资源,并且只使用当时的免费资源?
答案 0 :(得分:0)
我建议先做
Process.setThreadPriority(Process.THREAD_PRIORITY_BACKGROUND);
在池中的所有线程中。这可以控制Thread的Linux优先级。查看http://developer.android.com/reference/android/os/Process.html#setThreadPriority(int)以获取可用常量列表。
基本上,int
值的范围从-20(非常紧急)到20(最少)。
THREAD_PRIORITY_BACKGROUND
为10 THREAD_PRIORITY_LOWEST
(19)的文档中:“最低可用线程优先级。仅适用于那些真正,真的不想在其他任何事情发生的情况下运行的人。 “答案 1 :(得分:0)
默认情况下在服务中执行的线程将在后台执行。如果系统开始耗尽资源,操作系统将关闭服务。
为了简单起见,您可以使用AsyncTask来运行线程,AsyncTask使用线程池,因此启动线程的成本很低,请注意默认情况下它们将以串行方式运行。