Как обновить представление в потоке пользовательского интерфейса из рабочего потока - PullRequest
2 голосов
/ 21 июля 2010

У меня два потока, в которых запущен один интерфейс пользователя, а другой - рабочий поток.Рабочий поток непрерывно читает по порту некоторые данные с сервера, когда появляется сообщение, мне нужно обновить свое веб-представление в потоке пользовательского интерфейса.Рабочий поток снова продолжает читать и никогда не заканчивается.Пожалуйста, предложите, как это сделать ??

. Это может быть похоже на «сигналы в C ++», которые вызывают метод в вызываемом потоке… !!Я попытался: 1) Поскольку выполнение рабочего потока в пользовательском интерфейсе (runOnUIThread) может ухудшить производительность веб-просмотра пользовательского интерфейса, и если я перевожу поток в спящий режим, он может пропустить данные, появившиеся в порту во время сна ... (я не уверен!)Я должен был указать время перед повторным вызовом потока n снова, что может привести к пропуску данных, если они появляются на порте как sleep ().3) Имея отдельный поток в том же классе, он дает: любой другой поток не может обновить представление основного потока пользовательского интерфейса.

Plz help ..: (*

Ответы [ 2 ]

1 голос
/ 08 августа 2010

Может быть, я что-то упускаю, но похоже, что вам нужно создать объект Handler и затем использовать метод post (): http://developer.android.com/reference/android/os/Handler.html#post%28java.lang.Runnable%29

0 голосов
/ 08 сентября 2010

У меня была похожая проблема. У меня есть поток пользовательского интерфейса и несколько потоков, которые делают серверные серверы. Я использую Шаблон наблюдателя, чтобы сервисы обновляли пользовательский интерфейс, и для этого у меня есть метод обновления в новом потоке, и я вызываю runOnUiThread(), чтобы он обновлял пользовательский интерфейс. Кажется, что-то работает хорошо для чего-то быстрого. Если вы хотите что-то лучше, чем быстрый лейкопластырь, я бы посоветовал прочитать это руководство по ниточкам для Android от Google и попытаться включить его в свой дизайн.

...