Question

J'ai vu un morceau de code en ligne. Je me demande pourquoi nous avons besoin d'utiliser runnable au texte ensemble de TextView? Merci!

    while (true) {
    // listen for incoming clients
    Socket client = serverSocket.accept();
    handler.post(new Runnable() {
        @Override
        public void run() {
            serverStatus.setText("Connected.");
        }
    });

http: //thinkandroid.wordpress .com / 2010/03/27 / intégration sockets-programmation en-vos-applications /

Était-ce utile?

La solution

Cette application est multi-thread, est-ce pas? Dans ce cas, un seul thread peut effectuer des opérations sur l'interface utilisateur - le thread d'interface utilisateur. Si vous ne créez pas manuellement de nouveaux threads, alors vous n'avez pas à vous inquiéter à ce sujet. Une fois que vous commencez un nouveau thread vous et vous le souhaitez, vous devez le faire faire l'interface utilisateur de quelque chose lié (comme le texte de mise à jour du serverStatus champ texte) sur un fil interface utilisateur. Ne pas respecter cette règle entraînera une exception.

Handlers sont utilisés comme un moyen de transmettre des messages entre les fils. Dans ce cas, le thread d'interface utilisateur a un gestionnaire qui a été envoyé en tant que paramètre lors de la création serveur-fil. Chaque fois qu'il a besoin de mettre à jour l'interface utilisateur, il affiche un message au thread d'interface utilisateur, qui vérifie périodiquement de nouveaux messages et exécute runnables attachés.

Voici un autre lien (avec exemple) qui pourraient vous aider à comprendre un peu mieux: http://developer.android.com/guide/appendix/faq/commontasks.html#threading

Autres conseils

Ce morceau de code est en fil de serveur. UI (dans ce cas edittext) ne peut être mis à jour dans le Uithread. Runnable vous ramène au thread d'interface utilisateur. Référence: http://developer.android.com /reference/android/app/Activity.html#runOnUiThread(java.lang.Runnable)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top