2010-09-01 20 views

Respuesta

6

El HandlerThread que usa IntentService no está expuesto al SDK. Se establece en Process.THREAD_PRIORITY_DEFAULT como prioridad.

Tenga en cuenta que IntentService es 143 líneas de código, incluyendo espacios en blanco y comentarios, por lo que puede considerar clonarlo para tener uno con la prioridad que busca.

+0

Gracias Mark. Eso es lo que terminé haciendo. – smith324

-4

Cambié la prioridad de IntentService usando: "android.os.Process.setThreadPriority (android.os.Process.THREAD_PRIORITY_BACKGROUND);" en el constructor de la clase IntentService.

En mi caso fue cambiado de: "Process.THREAD_PRIORITY_DEFAULT", que es cero (0) a "Process.THREAD_PRIORITY_BACKGROUND", que es de diez (10) y el resultado fue visible.

+2

Está cambiando la prioridad del subproceso que crea IntentService, no la prioridad del subproceso donde vivió el controlador. Vea la respuesta aceptada para más información. – espinchi

12

Puede establecer Process.setThreadPriority(Process.THREAD_PRIORITY_BACKGROUND) en el método onHandleIntent() de su servicio de intención.

La solución de CommonsWare también funciona. Este es más simple, sin embargo.

0

Solo para dejarlo en claro - de manera predeterminada IntentService la prioridad es por defecto- Process.THREAD_PRIORITY_DEFAULT porque usa HandlerThread Internamente. Puede usar Process.setThreadPriority(Process.THREAD_PRIORITY_BACKGROUND) en OnHandleIntent(), o lo que CommonsWare sugirió en la respuesta.

personas han planteado esto como bug. y también está disponible patch para esto.

Cuestiones relacionadas