如何在Android中设置IntentService的优先级

时间:2010-09-01 20:06:35

标签: android multithreading service thread-priority

我想知道是否可以使用IntentService设置Thread的优先级。到目前为止,我还没有找到任何东西。

4 个答案:

答案 0 :(得分:12)

您可以在意图服务的Process.setThreadPriority(Process.THREAD_PRIORITY_BACKGROUND)方法中设置onHandleIntent()

CommonsWare的解决方案也有效。但这个更简单。

答案 1 :(得分:6)

HandlerThread使用的IntentService未向SDK公开。它被设置为Process.THREAD_PRIORITY_DEFAULT作为优先级。

请注意,IntentService是143行代码,包括空格和注释,因此您可以考虑将其克隆为具有您所寻求的优先级的代码。

答案 2 :(得分:0)

只是为了说清楚 - 默认情况下IntentService优先级为默认值Process.THREAD_PRIORITY_DEFAULT,因为它在内部使用HandlerThread。您可以在OnHandleIntent()中使用Process.setThreadPriority(Process.THREAD_PRIORITY_BACKGROUND),或者在答案中使用CommonsWare建议的任何内容。

有些人将其提升为bug。此外还有patch

答案 3 :(得分:-4)

我使用以下方法更改了IntentService的优先级: “android.os.Process.setThreadPriority(android.os.Process.THREAD_PRIORITY_BACKGROUND);” 在IntentService类的构造函数中。

在我的情况下,它改为: “Process.THREAD_PRIORITY_DEFAULT”,它为零(0) “Process.THREAD_PRIORITY_BACKGROUND”,这是十(10),结果是可见的。