2010-09-01 100 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可用。