2012-03-26 11 views
8

¿Podemos tener múltiples instancias de un servicio en Android? Quiero un servicio que pueda hacer que el teléfono permanezca en silencio en un momento específico y quiero volver a utilizar ese servicio para que el teléfono esté en modo de vibración en un tiempo específico. Entonces, básicamente, si puedo hacer que el servicio se ejecute varias veces, entonces no hay necesidad de crear otro servicio para configurar el teléfono en el modo de vibración. Además, si podemos ejecutar múltiples instancias, por favor explica cómo detenerlo. Cualquier sugerencia de código ayudará mucho.Cómo tener múltiples instancias de servicio en Android

Respuesta

25

¿Podemos tener múltiples instancias de un servicio en Android?

No. Usted puede tener varias subclases de Service, pero cualquier subclase dada de Service tendrá exactamente 0 o 1 instancias en un momento dado.

Quiero un servicio que pueda hacer que el teléfono permanezca en silencio en un momento específico y quiero reutilizar ese servicio para que el teléfono esté en modo de vibración en un tiempo específico.

No debe utilizar un servicio para nada de eso. Use AlarmManager y BroadcastReceiver, por favor.

+0

Gracias, estoy usando AlarmManager para iniciar el servicio en algún intervalo de tiempo. ¿Podría ayudarme a entender BroadcastReceiver y cómo usarlo usando AlarmManager? –

+0

@SumitSahoo: en lugar de llamar a 'getService()' para crear su 'PendingIntent', usted llama a' getBroadcast() '. Y, en lugar de que su lógica comercial esté en un 'Servicio', está en un' BroadcastReceiver' (típicamente registrado en el manifiesto a través de un elemento ' '). – CommonsWare

2

No creo que el servicio se pueda utilizar para tal fin. El servicio debe proporcionar alguna funcionalidad, pero solo un significado, no para varios propósitos diferentes. Es mejor crear un servicio adicional para mantener el código simple y claro.

2

Su pregunta no tiene mucho sentido. Parece que lo que quieres hacer es tener varias instancias del mismo servicio ejecutándose y haciendo cosas diferentes a la vez. Pero su pregunta depende fundamentalmente del hecho de que los servicios no deberían hacer cosas en una escala de tiempo larga. En cambio, lo que debería suceder es que reciban un intento, tal vez engendren un hilo o algo, y luego dejen de dar vueltas. Recuerde que un servicio aún se ejecuta en el hilo principal, no está en segundo plano, por lo que no debe ejecutar cosas largas de todos modos. Lo que tal vez quiera ver es un servicio atento, que se coordina con sus actividades mediante el uso de intenciones que controlan lo que debería estar sucediendo.

Cuestiones relacionadas