2010-07-21 13 views
2

J'ai deux threads exécutant une interface utilisateur et l'autre est thread de travail. Le thread de travail lit continuellement sur le port pour certaines données du serveur, quand apparaît je dois mettre à jour mon webview dans le fil de l'interface utilisateur. Le fil de travail continue à lire et ne se termine jamais. Plz suggère comment accomplir cela ??comment mettre à jour l'affichage dans le thread d'interface utilisateur à partir du thread de travail

il peut s'agir de 'signaux en C++' qui provoquent l'invocation d'une méthode appelée thread. J'ai essayé: 1) En tant que thread de travail sur l'interface utilisateur (runOnUIThread) peut dégrader les performances de la webview UI, et si je mets le fil en veille, il peut manquer des données sur le port en dormant .. ( 2) Gestionnaire, je dois spécifier l'heure avant de rappeler à nouveau le fil n qui peut faire manquer des données si apparait sur le port comme sleep(). 3) Ayant un thread séparé dans la même classe, il donne: tout autre thread ne peut pas mettre à jour la vue du thread principal de l'interface utilisateur.

plz help .. :(

+0

S'il vous plaît suggérer..donc runOnUI affecter les performances du fil de l'interface utilisateur ?? ..... car j'ai un filetage Ui qui ne pend pas à tout moment. – Placidnick

Répondre

1

Peut-être que je manque quelque chose, mais il semble que la création d'un objet gestionnaire, puis en utilisant la méthode post() est ce que vous avez besoin: http://developer.android.com/reference/android/os/Handler.html#post%28java.lang.Runnable%29

+0

en utilisant l'objet Hadler et en utilisant post(), ralentit considérablement les performances du thread UI, comme dans runnable, il se bloque lors de la lecture des données du serveur (in.readline). Identique à runOnUiThread. J'ai également essayé le modèle d'observateur en JAVA, mais hélas :( 1. J'ai deux threads 'worker' et 'UI' thread 2. worker continue d'attendre les données du serveur, quand il le notifie au thread UI. 3. Sur l'interface de mise à jour Toast un message sur l'écran L'étape 3 est le problème comme il est dit : Seul le thread d'origine qui a créé une hiérarchie de vue peut toucher ses vues Merci d'avance. – Placidnick

0

J'ai eu un semblable J'ai un thread d'interface utilisateur et quelques threads qui font office de serveur backend.J'utilise le pattern Observer pour que les services mettent à jour l'interface utilisateur et pour cela j'ai la méthode update dans un nouveau thread et j'appelle runOnUiThread() pour le mettre à jour Si vous voulez quelque chose de mieux qu'un pansement rapide, je vous suggère de lire this android threading guide de Google et d'essayer de l'incorporer avec ton design.