2010-09-23 10 views
0

Je suis un peu nouveau pour les programmes qui disposent d'une architecture mvc et je veux obtenir la bonne idée dès le début ...comment obtenir le droit mvc sur android?

J'ai cette application (Android), où un fil (distinct du fil de l'interface utilisateur) calcule certaines données. Une fois terminé, les résultats sont écrits sur un membre d'un objet. maintenant: comment puis-je obtenir le thread d'interface utilisateur pour "réaliser" qu'il y a eu une mise à jour (c'est-à-dire que le thread UI doit refaire la sortie d'écran).

la manière la plus évidente - exécuter une boucle sans fin dans le thread d'interface utilisateur qui vérifie chaque boucle s'il y a eu une mise à jour - est assez boiteuse. Alors, comment puis-je faire ce "bon"?

  • Devrais-je utiliser un gestionnaire, qui est appelé par le thread de calcul chaque fois que de nouvelles données sont disponibles. ce gestionnaire déclencherait alors une fonction qui redessine l'interface utilisateur.

  • Devrais-je utiliser wait() et notify() pour que le thread UI prenne conscience du fait qu'il y a de nouvelles données disponibles?

Je suis un peu perdu ici. même si je connais les bases de ces concepts, je ne sais pas lequel est le « meilleure » à utiliser ici ...

EDIT: pour clarifier:

j'ai une classe A (qui est une activité android) et une classe B qui est instanciée par A. Cette classe B a une variable membre X et exécute un thread, qui calcule la valeur de X. quand le thread finit, il envoie un message (avec la valeur calculée) à un gestionnaire de B. ce gestionnaire définit alors la valeur de X. maintenant: puisque B ne stocke aucune référence de A, comment puis-je "notifier" A qu'il y a eu un changement de la valeur de X? puis-je envoyer un autre objet message qui est "intercepté" par un gestionnaire dans la classe A?

Répondre

1

Utilisez un gestionnaire et laissez le thread d'arrière-plan notifier le thread d'interface utilisateur si une mise à jour est disponible.

Ne bloquez pas l'UI-Thread avec une boucle ou en attente. Cela rendra votre interface utilisateur inerte et provoquera la mort de votre application.

1

... votre question semble être plus sur la gestion des threads et sa conception que sur mvc.

Ensuite, vous ne devriez pas utiliser le thread de classe ou l'interface exécutable mais AsyncTask. Il est beaucoup plus facile de mettre à jour l'interface utilisateur et de concevoir votre logique métier. L'objectif d'AsyncTask est de prendre soin de la gestion des threads pour vous. Jetez un oeil sur le blog des développeurs android. Http://www.youtube.com/watch?v=dz5f9a Painless threading

Questions connexes