0

Je sais que le service s'exécute sur le thread principal, alors pourquoi utilisons-nous Broadcast Receiver ou Handler pour mettre à jour l'interface utilisateur dans Android. Pouvons-nous directement mettre à jour l'interface utilisateur sans utiliser de gestionnaire ou Broadcast Receiver du service dans Android. Je suis confus alors s'il vous plaît clarifier sur cette discussion.Mise à jour de l'interface utilisateur sans utiliser Broadcast Receiver ou Handler from Service dans android

Répondre

0

Pour mettre à jour l'interface utilisateur, vous devez disposer d'une référence à la vue. Vous ne pouvez pas obtenir de références aux vues du service. Mais vous pouvez le faire l'activité. C'est pourquoi vous devez appliquer l'activité pour mettre à jour l'interface utilisateur avant de le faire dans le service (puisque le service n'a pas d'interface utilisateur). Vous pouvez transmettre la référence à l'interface utilisateur dans le service, mais cela entraînera probablement des fuites de mémoire à cause de l'activité et les cycles de vie du service peuvent être différents, ce qui peut aboutir à un blocage dans lequel votre service verrouille l'activité. étant GCed, et Activity verrouille le service.

+0

Que signifient les services regullar? Un exemple de service s'exécute sur le thread principal? –

+0

@chetanmekha, tout service qui n'est pas spécial. Tout exemple, qui est étendu de 'Service'. –

2

Réponse: Créez votre activité et créez votre compte broadcast et voilà!

Détails: Dans votre question, votre référence au service et les gestionnaires, qui peuvent être démarrés dans un autre thread. -> Les gestionnaires sont utilisés pour les communications interprocessus, lorsqu'un service exécuté en dehors du thread de l'interface utilisateur doit parler avec le thread de l'interface utilisateur. -> Les services sont conçus pour les longs processus.

Dans votre question, vous faites référence au récepteur de diffusion, qui peut être démarré à partir d'un service ou d'une activité. -> Vous aurez toujours besoin d'un récepteur de diffusion si vous souhaitez mettre à jour l'interface utilisateur avec certains événements système (et autres événements personnalisés). -> Si c'est simplement capturer l'événement et mettre à jour un champ, ce n'est pas un long processus. Cependant, s'il s'agit de capturer et de lire une base de données ou d'accéder à un service Web (opérations très asynchrones), le processus est long.