Maison >Java >javaDidacticiel >Comment utiliser correctement runOnUiThread pour mettre à jour l'interface utilisateur Android à partir d'un fil de discussion en arrière-plan ?

Comment utiliser correctement runOnUiThread pour mettre à jour l'interface utilisateur Android à partir d'un fil de discussion en arrière-plan ?

Patricia Arquette
Patricia Arquetteoriginal
2025-01-01 00:40:10812parcourir

How to Correctly Use runOnUiThread to Update Android UI from a Background Thread?

runOnUiThread dans le développement Android

Les threads dans Android sont essentiels pour effectuer des tâches en arrière-plan sans bloquer le thread principal de l'interface utilisateur. Pour interagir avec les éléments de l'interface utilisateur à partir d'un fil d'arrière-plan, Android fournit la méthode runOnUiThread.

Malentendu dans le code fourni

Dans le code donné, le problème survient dans le runThread méthode. La création d'une nouvelle instance de Thread avec l'implémentation Runnable est correcte. Cependant, l'exécution de runOnUiThread directement dans le thread d'arrière-plan est incorrecte.

Implémentation correcte

Pour utiliser runOnUiThread correctement, l'approche recommandée consiste à créer un objet Runnable distinct en arrière-plan. thread, puis transmettez-le à runOnUiThread. Le thread principal de l'interface utilisateur exécutera ensuite ce Runnable passé pour mettre à jour les éléments de l'interface utilisateur.

Voici le code corrigé pour la méthode runThread :

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();
}

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!

Déclaration:
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