Habituellement, lorsque je crée un service Android, j'implémente la méthode onCreate
, mais cela ne fonctionne pas dans mon dernier projet. J'ai essayé d'implémenter onStartCommand
, et cela semble travailler.
La question est: quand je dois implémenter un service, quelle méthode est requise? Quelles méthodes dois-je mettre en œuvre? onCreate
, onStartCommand
ou les deux? Et quel est le rôle de chacun?
onCreate()
est appelée lorsque l'objet Service
est instancié (c'est-à-dire lorsque le service est créé). Dans cette méthode, vous ne devez effectuer les tâches qu'une seule fois (c.-à-d. Initialiser certaines variables, etc.). onCreate()
ne sera appelé qu'une fois par objet instancié.
Vous devez uniquement implémenter onCreate()
si vous voulez/devez initialiser quelque chose ne seule fois.
onStartCommand()
est appelé à chaque fois un client démarre le service avec startService(Intent intent)
. Cela signifie que onStartCommand()
peut être appelé plusieurs fois. Vous devez faire les choses nécessaires dans cette méthode à chaque fois un client demande quelque chose à votre service. Cela dépend beaucoup de ce que fait votre service et de la façon dont il communique avec les clients (et vice-versa).
Si vous n'implémentez pas onStartCommand()
, vous ne pourrez obtenir aucune information de la part de Intent
que le client transmet à onStartCommand()
et votre service pourrait ne pas être disponible. capable de faire un travail utile.
Le service se comporte comme l’activité Tout ce que vous voulez
associate
une fois avec un service ira dansonCreate
comme l’initialisation
et chaque fois que service
est appelé à l'aide de startService. onStartCommand
sera appelé. et vous pouvez passer toute action à effectuer. comme pour un lecteur de musique, vous pouvez jouer, mettre en pause, cesser d'utiliser l'action
Et vous faites n'importe quel operation in service
En envoyant une action et en la recevant le onStartCommand
onCreate
fonctionne comme un constructeur.
Modifier en bref
onCreate()
appelle uniquement pour la première fois que vous démarrez un Service
alors que onStartCommand()
appelle chaque fois que vous appelez à nouveau startService
. Il vous permet de définir une action comme jouer, arrêter, mettre en pause la musique.
public void onStartCommand()
{
if(intent.getAction.equals("any.play")
{
//play song
}
else if(intent.getAction.equals("any.stop")
{}
}