Comprendre runOnUiThread dans Android
Dans le développement Android, le thread d'interface utilisateur est responsable de la gestion des interactions utilisateur et de la mise à jour de l'interface utilisateur. Pour garantir que toutes les opérations de l'interface utilisateur sont effectuées sur le thread de l'interface utilisateur, la méthode runOnUiThread est couramment utilisée.
Dans l'extrait de code fourni, une tentative est effectuée pour mettre à jour l'interface utilisateur dans un thread distinct. en utilisant runOnUiThread. Cependant, l'implémentation actuelle est incorrecte, ce qui entraîne un comportement sans réponse lors du clic sur un bouton. Voici pourquoi :
Utilisation incorrecte de runOnUiThread
La méthode runOnUiThread accepte une instance Runnable comme argument. Dans votre code, vous créez par erreur un nouveau thread via Thread(Runnable) au lieu d'implémenter le exécutable dans l'activité en cours. Cela aboutit à la création d'un fil de discussion séparé sans boucleur, ce qui est essentiel pour gérer les événements de l'interface utilisateur.
Code corrigé
La version corrigée du runThread La méthode est la suivante :
private void runThread() { new Thread() { public void run() { while (i++ < 1000) { try { runOnUiThread(new Runnable() { @Override public void run() { btn.setText("#" + i); } }); Thread.sleep(300); } catch (InterruptedException e) { e.printStackTrace(); } } } }.start(); }
Dans ce code corrigé, un nouveau fil est créé, mais au sein de ce fil, runOnUiThread est invoqué pour mettre à jour les éléments de l'interface utilisateur sur le thread de l'interface utilisateur. L'instance Runnable transmise à runOnUiThread contient le code qui met à jour le texte du bouton.
En utilisant runOnUiThread correctement, vous vous assurez que toutes les interfaces utilisateur les opérations associées se produisent sur le thread principal de l'interface utilisateur, empêchant le gel de l'interface utilisateur et garantissant la réactivité.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!