Je continue d'entendre parler de services y récepteurs de radiodiffusion . Quelle est la différence entre eux, et comment affectent-ils le fonctionnement de mon téléphone Android de mon point de vue ?
Réponse
Trop de publicités?Les applications Android comportent trois types de composants. En général, les utilisateurs n'ont pas besoin de les connaître : ils permettent aux auteurs d'applications de programmer des comportements particuliers dans leurs applications. Mais si vous surveillez de près le comportement de vos applications, par exemple avec un gestionnaire de tâches, ou si vous automatisez les choses avec une application comme Tasker, il est utile de comprendre comment ils s'intègrent au système.
Un site activité est le type de composant le plus familier : il s'agit d'une fenêtre que vous pouvez voir, en plein écran ou en taille de dialogue. Une activité ne fonctionne que pendant qu'elle est affichée à l'écran. Lorsque vous quittez l'activité, Android conserve l'application en mémoire, prête à être relancée, mais l'activité ne s'exécute pas, ce qui signifie qu'elle n'utilise ni la batterie ni le réseau. Une application lance une activité en utilisant un intention . L'intention peut spécifier explicitement l'activité à lancer ou une action à exécuter (comme l'ouverture d'un fichier particulier). Si plus d'une activité peut "gérer" l'intention, la boîte de dialogue vous demandant d'en choisir une s'affiche.
A service est un autre composant de l'application. Une fois qu'un autre composant (peut-être une activité ou un autre service) a lancé un service, celui-ci fonctionne en arrière-plan jusqu'à ce qu'il s'arrête de lui-même. Cela signifie qu'un service peut maintenir votre téléphone éveillé (en utilisant une fonction verrouillage du réveil ), épuiser la batterie ou utiliser beaucoup de données réseau, sans que rien n'apparaisse à l'écran.
Les applications peuvent utiliser des services pour exécuter des processus de longue durée en arrière-plan, comme le téléchargement de fichiers à partir d'un serveur, la vérification des e-mails ou la vérification de votre position. Bien que les services ne s'affichent pas et n'interagissent pas directement avec vous, ils apparaissent tout de même dans la liste des "applications en cours d'exécution". Depuis l'écran Paramètres choisissez Apps o Gestionnaire d'applications et ensuite Running . Vous pouvez arrêter un service de cette façon, mais ce n'est généralement pas nécessaire. Comme les services ne sont pas directement visibles, Android les considère comme moins importants que les activités, et ils seront donc les premiers à être tués lorsque votre téléphone aura besoin de plus de mémoire.
Récepteurs de radiodiffusion sont le troisième type de composant. Comme les services, ils n'existent qu'en arrière-plan et n'interagissent pas directement avec vous. Mais contrairement aux services, ils ne peuvent pas rester en fonctionnement ou effectuer des tâches de longue durée : ils existent pour répondre aux événements. Et contrairement aux activités et aux services, il est possible de lancer plus d'un récepteur de diffusion en une seule fois.
Un composant diffuse une intention, éventuellement à une application, mais le plus souvent sans spécifier une application particulière. Dans ce cas, l'intention représente généralement un événement qui s'est produit, comme le fait que la batterie soit faible. Le système trouve tous les récepteurs de diffusion qui ont enregistré un intérêt (à l'aide d'une balise filtre d'intention ), et les exécute tour à tour. Chaque récepteur de diffusion peut réagir immédiatement, par exemple en créant une notification, ou il peut lancer un service ou une activité pour prendre d'autres mesures. Dès que le récepteur de diffusion a traité l'événement, il est arrêté et ne sera plus exécuté jusqu'à ce qu'un autre événement similaire soit diffusé.
Un exemple de la collaboration de ces trois composants est le téléchargement d'une application depuis Google Play. Tout d'abord, l'activité Google Play fournit l'interface visuelle qui vous permet de choisir le contenu à télécharger. La liste des applications peut être une activité ; cliquer sur le bouton "installer" lance une autre activité pour afficher la boîte de dialogue de confirmation ou de paiement. Lorsque vous confirmez, l'activité de dialogue lance un service. Le service continuera à télécharger le contenu même si l'activité est terminée et n'est plus en cours d'exécution.
Mais peut-être le téléphone perd-il sa connexion Internet pendant le téléchargement de la nouvelle application. Si cela se produit, le service de téléchargement de Google Play enregistre un récepteur de diffusion, avec un filtre d'intention pour dire qu'il s'intéresse aux changements de connectivité du réseau, puis le service s'arrête de lui-même. Lorsque le téléphone se connecte à Internet, le système diffuse un événement. Android lance le récepteur de diffusion enregistré par le service Google Play, ainsi que tout autre récepteur de diffusion en attente de cet événement. Dans ce cas, le récepteur de diffusion démarre à nouveau le service de téléchargement. Le service créera des notifications au fur et à mesure du téléchargement, et lorsqu'il sera terminé, il enverra sa propre diffusion pour informer les autres applications que le nouveau paquet a été installé, puis s'arrêtera. À son tour, il lancera les récepteurs de diffusion des autres applications, pour mettre à jour la liste des applications dans le lanceur, etc.
En résumé :-
- Une activité représente une fenêtre à l'écran ; un service exécute une tâche d'arrière-plan qui peut durer longtemps ; un récepteur de diffusion s'exécute pendant une courte période, pour traiter un événement.
- Toutes trois sont lancées à l'aide d'intentions, mais en utilisant un mécanisme différent. L'application de lancement doit indiquer explicitement le type de composant à lancer (en appelant une méthode différente dans chaque cas).
- Lorsqu'une application lance une activité à l'aide d'une intention, elle ne lance qu'une seule activité (en affichant éventuellement la boîte de dialogue "Complete action using..." pour vous permettre de choisir laquelle). Il en va de même pour les services, mais la diffusion d'une intention peut lancer plusieurs récepteurs de diffusion, éventuellement à partir d'applications différentes.
- En tant qu'utilisateur, vous interagissez directement avec les activités ; vous n'interagissez pas avec les services, mais ils peuvent ralentir le téléphone et consommer des ressources ; vous n'interagissez pas avec les récepteurs de diffusion, et comme ils sont de courte durée, vous n'avez pas à vous soucier de leur gestion.