2010-09-01 99 views

回答

6

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

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

+0

谢谢马克。那实际上是我最终做的。 – smith324 2010-09-01 21:43:31

-4

我改变了IntentService的优先级: “android.os.Process.setThreadPriority(android.os.Process.THREAD_PRIORITY_BACKGROUND);” IntentService类的构造函数中的 。

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

+2

您正在更改创建IntentService的线程的优先级,而不是处理程序所在线程的优先级。查看接受的答案以获取更多信息。 – espinchi 2013-06-07 22:19:58

12

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

CommonsWare的解决方案也适用。虽然这个更简单。

0

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

有人提出这个为bug。此外还有patch可用。