« Approche de programmation concurrente sous Android » : différence entre les versions

Contenu supprimé Contenu ajouté
m Robot : Remplacement de texte automatisé (-(</ref>|<ref[^/]*/>) *(<sup>)?[,;\.]?(</sup>)? *<ref\b +\1{{,}}<ref)
Anpanman (discussion | contributions)
m typo
Ligne 29 :
Chaque ligne est identifiée par un index et contient donc une ''ImageView'' qui, grâce à un adaptateur, charge son image respective à travers le système de fichiers ou du réseau.
 
Chaque fois qu'une nouvelle ligne devient visible sur l'écran, soit à la création de la liste ou quand l'utilisateur descend dans celle-ci, le [[Framework (logiciel)|framework]] d'implémentation de la ''ListView'' invoque la méthode ''getView'' pour remplir le contenu de sa ligne. Et même si la liste contient une centaine de lignes, seulement quelques une-unes sont affichées à l'écran à n'importe quel instant. AÀ cause de cela, pour des soucis de performances, le composant représentant la ligne est réutilisé et est fourni à la méthode ''getView'' en paramètre.
 
Pour assurer une réactivité de la vue, l'application créer un ''ImageLoader'' qui est une ''AsyncTask'' (un mécanisme de thread asynchrone présent nativement dans Android) afin de charger l'image. À la fin du chargement, cette tâche avertit le thread principal pour que celui-ci rafraîchisse la vue avec l'image téléchargée.
Ligne 50 :
 
==== Comportement nuisible ====
Si lorsque la tâche asynchrone est terminée et doit renvoyer ses résultats, l'activité n'est plus dans un état valide (cela peut se produire si l'utilisateur navigue autre part, comme par exemple en appuyant sur le bouton précédent alors que la pop-up est toujours présente), il est possible que l'activité crashe tout simplement en essayant d'invoquer des méthodes sur des objets invalides (comme par exemple, essayer de faire disparaître la pop-up qui n'existe plus et qui est donc ''null'').
 
Dans cet exemple, l’événement qui détruit l'activité quand l'utilisateur navigue autre part et l’événement de la tâche asynchrone ne possèdent pas d'ordre.
Ligne 72 :
 
==== Comportement nuisible ====
Si la puce GPS demande une mise à jour de la position alors que la méthode ''onStop'' est entrainen train d'être invoquée, la position peut arriver lorsque l'activité àa déjà été arrêtée, la connexion à la base de données va être réouverte par le ''SQLiteOpenHelper'' et consommer des ressources alors que l'utilisateur n’interagit plus avec cette activité.
 
==== Solution ====
Ligne 78 :
 
== Android et son fonctionnement ==
Cette partie va balayer la manière dont Android fonctionne et plus particulièrement comment Android gère la délégation d’événements, celle-ci étant différente par rapport à un système classique et utilisant des mécanismes développéesdéveloppés par le framework.
 
=== Délégation d’événements ===
Ligne 156 :
La clé de l'analyse repose sur la possibilité de proposer un algorithme de calcul de graphe d'HB fiable depuis une exécution d'un programme donné.
 
La raison pour laquelle il est nécessaire d'avoir un nouvel algorithme réside dans la complexité des règles HB discutées jusqu'ici. En effet, une fois développé pour Android, un algorithme de construction d'HB graphe pourra être facilement transformé pour d'autres plateformeplateformes (iOS - Windows Phone).
 
=== Règle efficace de matching ===
Ligne 246 :
Ils prennent aussi bien plus de temps (plusieurs heures contre quelques secondes) et ne peuvent analyser d'interactions réalistes.
 
SRDAA détecte les situations de compétition provenant d'un cotécôté du code utilisateur mais également les interactions avec le framework [[Android]].
 
Concernant la disponibilité des outils :
* CAFA n'est pas disponible publiquement
* DROIDRACER ne peut traiter à l'heure actuelle de traces plus grandes que quelques secondes et continue à planter
* SRDAA est disponible sur un site internet et en tempstant qu'outil à l'adresse : http://eventracer.org/android/
 
== Note et références ==