我想知道是否可以使用IntentService
设置Thread
的优先级。到目前为止,我还没有找到任何东西。
答案 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建议的任何内容。
答案 3 :(得分:-4)
我使用以下方法更改了IntentService的优先级: “android.os.Process.setThreadPriority(android.os.Process.THREAD_PRIORITY_BACKGROUND);” 在IntentService类的构造函数中。
在我的情况下,它改为: “Process.THREAD_PRIORITY_DEFAULT”,它为零(0) “Process.THREAD_PRIORITY_BACKGROUND”,这是十(10),结果是可见的。