在Android中使用线程池,了解系统资源

时间:2014-12-18 22:37:38

标签: android threadpoolexecutor

我试图在android上编写一些后台服务,现在我已经创建了自己的线程池来处理它们。

服务正在一台可能让游戏处于前台的机器上运行,我希望游戏优先于系统资源。

有没有办法让线程池意识到系统的空闲资源,并且只使用当时的免费资源?

2 个答案:

答案 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使用线程池,因此启动线程的成本很低,请注意默认情况下它们将以串行方式运行。