web-dev-qa-db-fra.com

Comment arrêter Android lorsque l'application est fermée

J'essaie de maintenir le service en continu jusqu'à ce que l'utilisateur ferme l'application.

J'utilise la méthode startService() de la méthode onCreate() de mon activité principale et stopService() dans la méthode onDestroy().

Maintenant, j'ai un problème, car il semble que mon activité principale meurt et soit recréée lorsque je tourne l'appareil ou lorsque j'éteins l'écran.

Comment puis-je arrêter mon service uniquement lorsque l'utilisateur arrête l'application manuellement?

25
Kamil

Définissez l'attribut ci-dessous dans votre numéro de service dans le fichier manifeste,

<service Android:name="service" Android:stopWithTask="true"/>

l'ajout de cela appellera la ondestroy() du service lorsque la tâche est supprimée (application fermée de la liste des applications récentes).

82
CVA

Je veux dire une application intentionnelle proche. Une fois que l'utilisateur a glissé l'application sur l'écran des "applications récentes".

Ce n'est pas "fermer l'application", en termes d'Android. C'est "supprimer la tâche" (ou parfois "arrêter la tâche" - Google n'est pas très cohérent sur la terminologie).

Votre service doit être appelé avec onTaskRemoved() lorsque la tâche est supprimée. Cependant, cela devrait être à la fois lorsque l'utilisateur supprime manuellement la tâche via l'écran de vue d'ensemble (aka, liste des tâches récentes) et lorsque la tâche disparaît naturellement sur Android 4.4 et ci-dessous car la tâche est trop vieux.

15
CommonsWare