Les services sont parfois très compliqués.
Lorsque vous démarrez un service à partir d'une activité (ou de votre processus), le service se trouve essentiellement sur le même processus.
citant les notes du développeur
La plupart des confusions concernant la classe Service tournent en fait autour de ce qu'elle n'est pas :
Un service n'est pas un processus distinct. L'objet Service lui-même n'implique pas qu'il s'exécute dans son propre processus ; sauf indication contraire, il s'exécute dans le même processus que l'application dont il fait partie.
Un service n'est pas un fil. Ce n'est pas non plus un moyen d'effectuer du travail en dehors du fil principal (pour éviter les erreurs "Application Not Responding").
Cela signifie que si l'utilisateur retire l'application des tâches récentes, votre processus sera supprimé (cela inclut toutes vos activités, etc.). Prenons maintenant trois scénarios.
Première où le service n'a pas une notification au premier plan.
Dans ce cas, votre processus est tué en même temps que votre service.
Deuxième où le service a une notification au premier plan
Dans ce cas, le service n'est pas tué et le processus non plus
Troisièmement scénario Si le service n'a pas de notification au premier plan, il peut continuer à fonctionner si l'application est fermée. Nous pouvons le faire en exécutant le service dans un processus différent. (Cependant, j'ai entendu certaines personnes dire que cela pourrait ne pas fonctionner. Il ne tient qu'à vous d'en faire l'expérience )
vous pouvez créer un service dans un processus séparé en incluant l'attribut ci-dessous dans votre manifeste.
Android:process=":votreService"
o
Android:process="votreService" le nom du processus doit commencer par une minuscule.
citant les notes du développeur
Si le nom attribué à cet attribut commence par deux points (':'), un nouveau processus, privé pour l'application, est créé en cas de besoin et le service s'exécute dans ce processus. Si le nom du processus commence par un minuscules le service s'exécutera dans un processus global de ce nom, à condition qu'il en ait l'autorisation. Cela permet aux composants de différentes applications de partager un processus, réduisant ainsi l'utilisation des ressources.
c'est ce que j'ai compris, si quelqu'un est un expert, qu'il me corrige si je me trompe :)