2011-06-13 15 views
18

Estoy un poco confundido sobre la diferencia entre IntentService y Service. Entiendo que IntentService tiene una cola de trabajo, pero ¿hay algún beneficio de usar múltiples IntentService sobre un servicio?Multiple IntentService o un servicio

Aquí hay un ejemplo de lo que quiero decir. Digamos que quiero que mi aplicación extraiga datos de 3 fuentes. ¿Debo comenzar un servicio que ejecute tres hilos, cada uno extrayendo de su fuente respectiva? ¿O debería comenzar tres IntentServices por separado?

Respuesta

11

IntentService es una clase conveniente para escribir servicios que son trabajadores en el patrón productor-consumidor. Son servicios diseñados para ejecutar varias tareas seguidas y luego detenerse. Los servicios no son necesariamente IntentServices, como los servicios que deben mantenerse vivos, como los daemons.

Por lo tanto, debe preguntarse si su servicio está cerca de un hilo de trabajo, si es así, use IntentServices, sino que solo deriva del Servicio.

Su segunda pregunta fue si agrupar los 3 servicios en un servicio 3 en 1. La respuesta es que depende de cómo utilice sus fuentes de datos: si las usa en su totalidad, agrúpelas en un solo servicio. Si se usan por separado, puede crear un servicio para cada uno con la esperanza de proporcionar un servicio más ligero si solo se utiliza un origen de datos y no el otro. Pero si usa las 3 fuentes de datos, cada una en un servicio, entonces será más pesado que usar un solo servicio.

6

Entiendo que la diferencia entre intentService y Service es que intentService generará un hilo de trabajo para ejecutarlo, mientras que un servicio se ejecuta en el hilo principal de su proceso de alojamiento. Además, un intentService se detendrá cuando se termine el trabajo, mientras que un servicio continuará ejecutándose hasta que se llame a stopSelf o stopService.

Si las 3 fuentes de datos necesitan compartir información entre ellas, colóquelas todas en el mismo Servicio; de lo contrario, manténgalas separadas porque si una fuente de datos está inactiva dejará un servicio pesado en lugar de una sola luz Servicio.

Cuestiones relacionadas