Android Mise à jour de l'interface utilisateur à partir d'un thread d'arrière-plan


Exemple

Il est courant d'utiliser un thread d'arrière-plan pour effectuer des opérations réseau ou des tâches longues, puis mettre à jour l'interface utilisateur avec les résultats si nécessaire.

Cela pose un problème, car seul le thread principal peut mettre à jour l'interface utilisateur.

La solution consiste à utiliser la méthode runOnUiThread() , car elle vous permet de lancer l'exécution de code sur le thread d'interface utilisateur à partir d'un thread d'arrière-plan.

Dans cet exemple simple, un thread est démarré lors de la création de l'activité, s'exécute jusqu'à ce que le nombre magique de 42 soit généré de manière aléatoire, puis utilise la méthode runOnUiThread() pour mettre à jour l'interface une fois cette condition remplie.

public class MainActivity extends AppCompatActivity {

    TextView mTextView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mTextView = (TextView) findViewById(R.id.my_text_view);

        new Thread(new Runnable() {
            @Override
            public void run() {
                while (true) {
                    //do stuff....
                    Random r = new Random();
                    if (r.nextInt(100) == 42) {
                       break;
                    }
                }

                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        mTextView.setText("Ready Player One");
                    }
                });
            }
        }).start();
    }
}