Intereting Posts
Android: получение ошибки: не удалось преобразовать формат Dalvik Tab + ViewPager не обновляет вместо этого показывает странное предупреждение ожидаемое состояние 3 найдено 2 Android, как установить ScrollBar в Edittext? Как получить плавные данные ориентации в android Как добавить файл в проект Android, а затем загрузить его с помощью NDK Почему PhoneGap работает медленнее, чем браузер? Выделение выделенного элемента в списке в андроиде Могу ли я решить ошибку -505 в Play Store в качестве разработчика приложений? (Не Adobe AIR приложение) Размер значка уведомлений в Android Что является ближайшим эквивалентом переменной Session / Cookie в Android? Как установить положение прокрутки в начало списка Использование SurfaceTexture, заполненного предварительным просмотром камеры, как вход Renderscript. Выделение в Jelly Bean Как использовать папку root phonegap www? Отладка кода ядра Linux на платформах Android Видео Mp4 в теге html5, не играющем в мобильном хром и мобильном сафари

Обновить текст из потока

В моем методе OnCreate я создал поток, который прослушивает входящее сообщение!

In OnCreate() { //Some code myThread = new Thread() { @Override public void run() { receiveMyMessages(); } }; myThread.start(); // Some code related to sending out by pressing button etc. } Then, receiveMyMessage() functions… Public void receiveMyMessage() { //Receive the message and put it in String str; str = receivedAllTheMessage(); // << here I want to be able to update this str to a textView. But, How? } 

Я проверил эту статью, но это не сработало для меня, не повезло!

Любые обновления пользовательского интерфейса в приложении для Android должны происходить в потоке пользовательского интерфейса. Если вы создаете поток для работы в фоновом режиме, вы должны перенести результаты обратно в поток пользовательского интерфейса, прежде чем касаться представления. Вы можете использовать класс Handler для выполнения маршалинга:

 public class TestActivity extends Activity { // Handler gets created on the UI-thread private Handler mHandler = new Handler(); // This gets executed in a non-UI thread: public void receiveMyMessage() { final String str = receivedAllTheMessage(); mHandler.post(new Runnable() { @Override public void run() { // This gets executed on the UI thread so it can safely modify Views mTextView.setText(str); } }); } 

Класс AsyncTask упрощает для вас много деталей, и вы также можете изучить его. Например, я считаю, что он предоставляет вам пул потоков, чтобы помочь уменьшить некоторые из затрат, связанных с созданием нового потока каждый раз, когда вы хотите выполнять фоновую работу.

Android поддерживает параллелизм при передаче сообщений с помощью обработчиков и sendMessage (msg). (Также можно использовать обработчики для параллелизма с общей памятью.) Один совет – вызвать thread.setDaemon (true), если вы хотите, чтобы поток умирал, когда приложение умирает. Другой совет – иметь только один обработчик и использовать message.what и оператор switch в обработчике сообщений для маршрутизации сообщений.

Код и код