Généralement, lorsque je crée un service Android, onCreate
méthode onCreate
, mais dans mon dernier projet, cela ne fonctionne pas. J’ai essayé d’implémenter onStartCommand
, et cela semble fonctionner.
La question est: quand dois-je implémenter un service dont la méthode est requirejse? 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’object Service
est instancié (c’est-à-dire lorsque le service est créé ). Vous devriez faire des choses dans cette méthode que vous ne devez faire qu’une seule fois (par exemple: initialiser certaines variables, etc.). onCreate()
ne sera appelé qu’une seule fois par object instancié .
Vous devez seulement implémenter onCreate()
si vous voulez / devez initialiser quelque chose une seule fois .
onStartCommand()
est appelée chaque fois qu’un client démarre le service à l’aide de startService(Intent intent)
. Cela signifie que onStartCommand()
peut être appelé plusieurs fois. Vous devriez faire les choses dans cette méthode qui sont nécessaires chaque fois qu’un client demande quelque chose de votre service. Cela dépend beaucoup de ce que fait votre service et de la manière dont il communique avec les clients (et vice-versa).
Si vous onStartCommand()
pas onStartCommand()
vous ne pourrez pas obtenir d’informations de l’ Intent
que le client transmet à onStartCommand()
et votre service pourrait ne pas pouvoir effectuer de travail utile.
Le service se comporte comme l’activité Tout ce que vous voulez
associate
une fois avec un service ira dans uneonCreate
comme l’initialisation
et chaque fois que le service
est appelé à l’aide de startService . onStartCommand
sera appelé. et vous pouvez passer n’importe quelle action à effectuer. comme pour un lecteur de musique, vous pouvez jouer, mettre en pause, arrêter d’utiliser l’action
Et vous effectuez toute operation in service
en envoyant une action et en la recevant sur onStartCommand
onCreate
travail comme un constructeur.
Modifier en bref
onCreate()
appelle uniquement pour la première fois que vous démarrez un Service
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") {} }