Android onCreate ou onStartCommand pour démarrer le service

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 une onCreate 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") {} }