2010-09-01 2 views

ответ

6

HandlerThread, что IntentService не использует SDK. Он имеет значение Process.THREAD_PRIORITY_DEFAULT в качестве приоритета.

Обратите внимание, что IntentService - это 143 строки кода, включая пробелы и комментарии, поэтому вы можете просто клонировать его, чтобы иметь тот приоритет, который вы ищете.

+0

Thanks Mark. Это на самом деле то, что я закончил делать. – smith324

-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

12

Вы можете установить Process.setThreadPriority(Process.THREAD_PRIORITY_BACKGROUND) в методе onHandleIntent() вашего намерения.

Решение CommonsWare также работает. Однако это проще.

0

Просто, чтобы уточнить - по умолчанию IntentService приоритет по умолчанию - Process.THREAD_PRIORITY_DEFAULT, поскольку он использует HandlerThread Внутренне. Вы можете использовать Process.setThreadPriority(Process.THREAD_PRIORITY_BACKGROUND) в OnHandleIntent() или независимо от того, что предлагает CommonsWare в ответе.

некоторые люди подняли это как bug. и для этого также есть patch.

Смежные вопросы