Si vous démarrez un service en utilisant startService(), vous devez l'arrêter en utilisant stopService().
Il existe deux raisons pour lesquelles un service peut être exécuté par le système. Si quelqu'un appelle Context.startService() alors le système récupérera le service (en le créant et en appelant sa méthode onCreate() si nécessaire), puis appellera sa méthode onStartCommand (Intent, int, int) avec les arguments fournis par le client. Le service continuera à ce stade jusqu'à ce que Context.stopService() ou stopSelf() soit appelé. Notez que plusieurs appels à Context.startService() ne s'emboîtent pas (bien qu'ils aboutissent à plusieurs appels correspondants à onStartCommand()), donc peu importe le nombre de fois qu'il est démarré, un service sera arrêté une fois Context.stopService() ou stopSelf() est appelé; cependant, les services peuvent utiliser leur méthode stopSelf (int) pour s'assurer que le service n'est pas arrêté tant que les intentions commencées n'ont pas été traitées.
Vous pouvez lier au service autant de ServiceConnection que vous le souhaitez avec bindService(), mais faites attention à l'indicateur que vous lui avez transmis. Si vous passez 0 alors si vous appelez stopService() le service s'arrêtera (je ne sais pas exactement ce qui vous arrive ServiceConnection). Sinon, si vous souhaitez que votre service reste actif jusqu'à ce que ServiceConnection soit lié, utilisez BIND_AUTO_CREATE.
c'est de stopservice():
Demander que d'arrêter un service d'application donnée. Si le service ne fonctionne pas, rien ne se passe. Sinon, il est arrêté. Notez que les appels à startService() ne sont pas comptés - cela arrête le service quel que soit le nombre de fois qu'il a été démarré.
Notez que si un service arrêté a encore des objets ServiceConnection liés avec l'ensemble BIND_AUTO_CREATE, il ne sera pas détruit tant que toutes ces liaisons n'auront pas été supprimées. Voir la documentation du service pour plus de détails sur le cycle de vie d'un service.
Cette fonction lancera SecurityException si vous n'êtes pas autorisé à arrêter le service donné.
J'espère que cela aide ..
Comment puis-je lier à un service qui a été démarré avec startService()? – user123321
@musselwhizzle: cette question est extrêmement ancienne. Si vous avez une question, commencez un nouveau sujet de discussion. Mais il n'y a aucune différence dans la méthode dans laquelle vous vous liez à un service déjà en cours d'exécution. – Falmarri
Vous devez également noter que pour qu'un service soit complètement supprimé du cycle de vie d'une activité, démarrez le service en transmettant le contexte de l'application. Cela signifie que le service est lié au cycle de vie de l'application plutôt qu'à l'activité. Regardez également dans START_STICKY. Renvoyer le début collant avec le contexte de l'application permet à votre service de s'exécuter retiré du cycle de vie de l'application et de se redémarrer en cas d'échec avant d'avoir atteint son but. – superuserdo