ulrar Posté(e) 13 décembre 2010 Share Posté(e) 13 décembre 2010 Salut, ça fait un petit moment que j'ai pas fait de dev' Android et y a un truc que j'arrive pas à retrouver. Comment modifier l'UI depuis un autre thread ? (En l'occurrence, faire un simple textview.append()). J'ai relu un peu les docs, et si je ne me trompe, il faut utiliser un handler. Seulement je ne comprend pas où je dois mettre ma fonction UpdateUI(String str); ? Quand je la met dans la définition du handler, elle n'est pas accessible plus tard, et ne sert donc à rien. Toutes les méthodes que j'ai essayé font soit crasher l'appli, soit ne font absolument rien. Si quelqu'un avait juste un petit exemple sous la main, ça serait parfait :-). J'essaye simplement de faire afficher à l'écran les différentes étapes de la connexion a un service (je voudrait afficher les commandes envoyées et reçu au fur et à mesure, histoire de voir où/si je me trompe). Merci. Lien vers le commentaire Partager sur d’autres sites More sharing options...
ichpa Posté(e) 14 décembre 2010 Share Posté(e) 14 décembre 2010 Bonjour, Il existe plus simple que le combo Thread/Handler pour rafraîchir l'UI. Ça s'appelle AsyncTask. Sinon, grosso modo tu dois coder un truc danc ce genre : class MyActivity extends Activity { private final Handler handler = new Handler () { public void handleMessage(Message msg) { String str=null; // récupère le message updateUI(str); } } private void updateUI(String str){ // met à jour UI } // n'importe ou dans ton activité private void foo (){ new Thread(new Runnable (){ // Fait ton traitement et crée le message a envoyer à l'UI Message msg=null; handler.sendMessage (msg); // ou une autre méthode en fontion du besoin }).start(); } } Bon courage, ichpa Lien vers le commentaire Partager sur d’autres sites More sharing options...
Alocaly Posté(e) 18 décembre 2010 Share Posté(e) 18 décembre 2010 Il y a meme encore plus simple : La fonction runonuithread. Tu lui passes juste un runnable qui tournera sur le thread principal, et qui peut faire ce que tu veux... http://developer.android.com/intl/fr/reference/android/app/Activity.html#runOnUiThread(java.lang.Runnable) Lien vers le commentaire Partager sur d’autres sites More sharing options...
Pierre87 Posté(e) 19 décembre 2010 Share Posté(e) 19 décembre 2010 AsyncTask est à préférer quand on a besoin ponctuellement d'effectuer une tâche en dehors du ui thread (et optionnellement de modifier l'ui à la fin) runOnUiThread() sert juste à modifier l'ui quand on ne se trouve pas dans "le bon thread" Lien vers le commentaire Partager sur d’autres sites More sharing options...
acesyde Posté(e) 21 décembre 2010 Share Posté(e) 21 décembre 2010 L'asyntask étant juste un helper contenant un thread et un handler, on peu faire soit thread/handler soit asyntack ça reviens au même. Mais connaitre le fonctionnement des thread c'est pas du luxe B) Lien vers le commentaire Partager sur d’autres sites More sharing options...
Recommended Posts
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.