Normalmente, quando crio um serviço Android, implemento o onCreate
método, mas em meu último projeto isso não funciona. Tentei implementar onStartCommand
e parece funcionar.
A questão é: quando tenho que implementar um serviço, qual método é necessário? Quais métodos devo implementar? onCreate
, onStartCommand
ou ambos? E qual é o papel de cada um?
android
android-service
oncreate
GVillani82
fonte
fonte
onCreate
é sempre chamado independentementeRespostas:
onCreate()
é chamado quando oService
objeto é instanciado (ou seja: quando o serviço é criado ). Você deve fazer coisas neste método que você precisa fazer apenas uma vez (ou seja: inicializar algumas variáveis, etc.).onCreate()
só será chamado uma vez por objeto instanciado .Você só precisa implementar
onCreate()
se realmente quiser / precisar inicializar algo apenas uma vez .onStartCommand()
é chamado sempre que um cliente inicia o serviço usandostartService(Intent intent)
. Isso significa queonStartCommand()
pode ser chamado várias vezes. Você deve fazer as coisas neste método que são necessárias cada vez que um cliente solicita algo de seu serviço. Isso depende muito do que seu serviço faz e como ele se comunica com os clientes (e vice-versa).Se você não implementar
onStartCommand()
, não será capaz de obter nenhuma informação doIntent
que o cliente passaonStartCommand()
e seu serviço pode não ser capaz de fazer nenhum trabalho útil.fonte
startService()
, se o serviço não estiver em execução, o Android criará uma instância da classe de serviço (este é um objeto de serviço) e, em seguida, chamaráonCreate()
esse objeto. Em seguida, chamaráonStartCommand()
esse objeto. Se, algum tempo depois, você ligar novamentestartService()
, se o serviço ainda estiver em execução, o Android não criará um novo objeto de serviço. Em vez disso, ele apenas chamaráonStartCommand()
o objeto de serviço existente. Está claro?e sempre que
service
for chamado usando startService .onStartCommand
será chamado. e você pode passar qualquer ação a ser executada. como para um reprodutor de música, você pode reproduzir, pausar, parar de usar a açãoE você faz qualquer
operation in service
um enviando uma ação e recebendo-a noonStartCommand
onCreate
trabalhar como um construtor.Editar resumidamente
onCreate()
liga apenas na primeira vez que você inicia um,Service
enquantoonStartCommand()
liga sempre que liga para ostartService
novamente. Ele permite que você defina uma ação como reproduzir, parar, pausar a música.fonte