7 votes

Quels sont les avantages des applications Android à filtrage unique ?

J'ai lu une déclaration sur http://developer.Android.com qui a dit :

Lorsqu'une application est lancée, le système crée un fil d'exécution pour l'application, appelé "main". Ce fil d'exécution est très important car il est chargé d'envoyer les événements aux widgets appropriés de l'interface utilisateur, y compris les événements de dessin. C'est également le thread dans lequel votre application interagit avec les composants de la boîte à outils Android UI. Le système ne crée pas un thread distinct pour chaque instance d'un composant. Tous les composants qui s'exécutent dans le même processus sont instanciés dans le fil d'exécution de l'interface utilisateur, et les appels système à chaque composant sont envoyés à partir de ce fil.

Je voulais juste savoir pourquoi Android a opté pour cette architecture de modèle monofilaire et n'a pas opté pour le multi-fil. Quels sont les avantages qu'ils en retirent ?

20voto

Andy Brudtkuhl Points 1714

Les applications Android ne sont pas monofilaires. Bien qu'il n'y ait qu'un seul thread principal, comme décrit dans la documentation que vous avez citée, les applications peuvent lancer autant de threads qu'elles le souhaitent.

L'avantage d'avoir toutes les interactions de l'interface graphique sur un seul thread est que le code de l'interface graphique peut être plus simple, plus rapide et plus prévisible, car l'état de l'interface graphique n'est pas modifié simultanément par différents threads. La thread-safety est également plus facile pour les développeurs d'applications car elle fournit une file d'attente de messages, similaire à celles que l'on trouve dans les cadres d'interface graphique d'autres systèmes d'exploitation. L'auteur de l'application doit simplement s'assurer que toutes les opérations longues sont effectuées dans des threads d'arrière-plan, en renvoyant des messages au thread principal pour mettre à jour l'interface graphique, et ainsi l'interface graphique reste réactive en permanence.

1voto

Wes Eklund Points 11

La documentation d'Android dit simplement que le thread principal doit calculer toutes les fonctions liées à l'interface utilisateur. C'est le travail du développeur de créer des threads supplémentaires lorsqu'il récupère des données de la base de données SQLite locale ou du réseau, ou même si vous créez une vue personnalisée lourde en calcul avec beaucoup de logique d'affichage.

Pour un aperçu très complet de la concurrence dans Android et du mutli-threading, consultez le document suivant

Android asynchrone de Steve Liles

Un livre génial, génial.

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X