Maison > Java > javaDidacticiel > Comment « runOnUiThread() » garantit-il des mises à jour fluides de l'interface utilisateur sous Android ?

Comment « runOnUiThread() » garantit-il des mises à jour fluides de l'interface utilisateur sous Android ?

DDD
Libérer: 2024-12-20 19:52:14
original
552 Les gens l'ont consulté

How Does `runOnUiThread()` Ensure Smooth UI Updates in Android?

L'utilisation appropriée de runOnUiThread dans Android : une explication détaillée

Dans le développement Android, l'interaction avec le thread de l'interface utilisateur peut être un aspect crucial de garantir des expériences utilisateur fluides et réactives. runOnUiThread() est une méthode clé pour réaliser cette interaction.

Comprendre le problème : clic sur le bouton qui ne répond pas

Dans l'extrait de code fourni, un problème survient après avoir cliqué sur le bouton . Le bouton ne répond plus en raison d'une mauvaise compréhension de la méthode runThread().

L'implémentation correcte : mise à jour du fil de discussion de l'interface utilisateur

Pour résoudre le problème, il est nécessaire de rectifier l'implémentation de runThread(). Au lieu de créer un nouveau Thread directement dans runThread(), un objet Thread distinct doit être créé et démarré. Dans la méthode run() de ce nouveau Thread, les mises à jour du thread de l'interface utilisateur doivent être effectuées à l'aide de la méthode runOnUiThread().

Méthode runThread() corrigée

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();
}
Copier après la connexion

Explication des corrections

  1. Thème séparé Création : Le nouveau bloc Thread() garantit que le thread de l'interface utilisateur n'est pas bloqué par la boucle.
  2. Mises à jour de l'interface utilisateur via runOnUiThread : Les mises à jour de l'interface utilisateur (définition du texte du bouton) sont désormais effectué dans un objet Runnable passé à runOnUiThread(). Cela garantit que les mises à jour sont effectuées sur le fil de discussion de l'interface utilisateur.
  3. Veille sur le nouveau fil de discussion : Thread.sleep() est appelé sur le nouveau fil de discussion, permettant au fil de discussion de l'interface utilisateur de rester réactif.

Avec ces corrections, le clic sur le bouton n'entraînera plus une inactivité de l'application et l'interface utilisateur se mettra à jour en douceur.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal