Pregunta Android onCreate o onStartCommand para iniciar el servicio


Por lo general, cuando creo un servicio de Android, implemento el onCreate método, pero en mi último proyecto esto no funciona. Intenté implementar onStartCommandy esto parece funcionar

La pregunta es: cuando tengo que implementar un servicio, ¿qué método se requiere? ¿Qué métodos tengo que implementar? onCreate, onStartCommand, ¿o ambos? ¿Y cuál es el papel de cada uno?


74
2018-01-06 12:19


origen


Respuestas:


onCreate() se llama cuando el Service objeto se crea una instancia (es decir: cuando el servicio es creado) Debería hacer las cosas en este método que necesita hacer solo una vez (es decir, inicializar algunas variables, etc.). onCreate() solo se llamará una vez por objeto instanciado.

Solo necesitas implementar onCreate() si realmente quieres / necesitas inicializar algo sólo una vez.

onStartCommand() se llama cada vez un cliente comienza el servicio usando startService(Intent intent). Esto significa que onStartCommand() puede ser llamado varias veces Deberías hacer las cosas en este método que son necesarias cada vez un cliente solicita algo de su servicio. Esto depende mucho de lo que hace su servicio y cómo se comunica con los clientes (y viceversa).

Si no implementa onStartCommand() entonces no podrá obtener ninguna información del Intent que el cliente pasa a onStartCommand() y su servicio podría no ser capaz de hacer ningún trabajo útil.


147
2018-01-06 14:00



El servicio se comporta igual que la actividad Lo que sea que quieras associate una vez con un servicio entrará onCreate como inicialización

y siempre que el service se llama usando Comienza el servicio. onStartCommand sera llamado. y puedes pasar cualquier acción para realizar. como para un reproductor de música, puedes jugar, pausar, dejar de usar acción

Y haces cualquier operation in service enviando una acción y recibiéndola en onStartCommand

onCreate trabajar como un Constructor

Editar en corto

onCreate() llama solo por primera vez que comienza un Service Mientras onStartCommand() llama cada vez que llamas al startService de nuevo. Te permite establecer una acción como reproducir, detener, pausar música.

public void onStartCommand()
{
     if(intent.getAction.equals("any.play")
     {
        //play song
     }
     else if(intent.getAction.equals("any.stop")
     {}
}

7
2017-07-14 06:18