Por lo general, cuando creo un servicio de Android implemento el onCreate
método, pero en mi último proyecto esto no funciona. Intenté implementarlo onStartCommand
y 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?
android
android-service
oncreate
GVillani82
fuente
fuente
onCreate
siempre se llama independientementeRespuestas:
onCreate()
se llama cuandoService
se crea una instancia del objeto (es decir, cuando se crea el servicio ). Debe hacer cosas en este método que necesita hacer solo una vez (es decir, inicializar algunas variables, etc.).onCreate()
solo se llamará una vez por cada objeto instanciado .Solo necesita implementar
onCreate()
si realmente desea / necesita inicializar algo solo una vez .onStartCommand()
se llama cada vez que un cliente inicia el servicio utilizandostartService(Intent intent)
. Esto significa que seonStartCommand()
pueden llamar varias veces. Debe hacer las cosas en este método que sean necesarias cada vez que un cliente solicite algo de su servicio. Esto depende mucho de lo que haga su servicio y cómo se comunica con los clientes (y viceversa).Si no lo implementa
onStartCommand()
, no podrá obtener ninguna información de laIntent
que el cliente pasaonStartCommand()
y es posible que su servicio no pueda realizar ningún trabajo útil.fuente
startService()
, si el servicio no se está ejecutando, Android creará una instancia de la clase de servicio (este es un objeto de servicio) y luego llamaráonCreate()
a ese objeto. Luego llamaráonStartCommand()
a ese objeto. Si, algún tiempo después, vuelve a llamarstartService()
, si el servicio aún se está ejecutando, Android no creará un nuevo objeto de servicio. En su lugar, solo llamaráonStartCommand()
al objeto de servicio existente. ¿Está claro?y cada vez que
service
se llama a mediante startService .onStartCommand
sera llamado. y puedes pasar cualquier acción a realizar. como para un reproductor de música, puede reproducir, pausar, dejar de usar la acciónY lo haces
operation in service
enviando una acción y recibiéndola enonStartCommand
onCreate
trabajar como un constructor.Editar en breve
onCreate()
llama solo la primera vez que inicia una,Service
mientras queonStartCommand()
llama cada vez questartService
vuelve a llamar . Te permite establecer una acción como reproducir, detener, pausar la música.fuente