Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
Darth Coder
281 / 262 / 107
Регистрация: 10.06.2011
Сообщений: 696
1

Форма не обновляется при запуске второго потока

19.07.2014, 23:21. Просмотров 980. Ответов 5
Метки нет (Все метки)

Есть следующий код:
Java
1
2
3
4
5
6
7
8
9
public void Upd(){
l=new Ping();
thr=new Thread(l);
thr.start();
while(thr.isAlive()){
srv.setText("текст");
Thread.sleep(100);}
srv.setText(data);
}
при запуске второго потока форма почему-то зависает и обновляется только после завершения Upd, хотя другие действия до завершения второго потока выполняются. Как это исправить?
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.07.2014, 23:21
Ответы с готовыми решениями:

Управление формой при запуске второго потока
Главный поток запускается main'ом. Когда запускаю второй поток, мне надо, чтобы...

При запуске второго потока не отправляется сигнал readyToSend объекту nthread
Здравствуйте, бьюсь уже целый день над проблемой. Суть задачи: Нужно запустить...

Не обновляется JLabel из второго потока
:cry: Учусь работать многопоточно. Создал второй поток с генератором тактов. На...

Клиент-сервер: Если запустить первый поток то он работает, при запуске второго потока выходит ошибка
Здравствуйте, пытаюсь разбить код на два потока. 1) Поток прием клиентов. ...

Не обновляется форма заказа. При открытии формы заново показывает сообщение, что заявка принята
Подскажите как можно обновить форму заказа, чтоб при повторном открытии...

5
NiRamz
211 / 211 / 33
Регистрация: 26.12.2010
Сообщений: 691
20.07.2014, 13:59 2
так нельзя .. работать с UI можно только в основном потоке, если же необходимо сделать какие то действия из вне, вызывайте runOnUiTread .. Да и .sleep() не стоит вызывать, если нужна задержка используем либо таймер, но я лично предпочитаю создавать Handler и вызывать postDelayed.
0
Darth Coder
281 / 262 / 107
Регистрация: 10.06.2011
Сообщений: 696
20.07.2014, 16:06  [ТС] 3
прочитал про runOnUiThread, классы Handler и AsyncTask, но так и не понял, как заставить форму обновляться постоянно (иначе стандартый прогрессбар не будет крутиться) И забыл написать, что второй поток никоим образом не изменяет форму,только записывает ответ от сервера в переменную, откуда главный поток и выводит ответ на форму
0
NiRamz
211 / 211 / 33
Регистрация: 26.12.2010
Сообщений: 691
20.07.2014, 16:36 4
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
private Handler handler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            if(msg.what == 1) {
                postDelayed(runnable, 1000);
            }
        }
    };
 
    private Runnable runnable = new Runnable() {
        @Override
        public void run() {
            srv.setText("текст");
            srv.setText(data);
            handler.sendEmptyMessage(1);
        }
    };
И запускаем все это дело -
Java
1
handler.post(runnable);
0
Darth Coder
281 / 262 / 107
Регистрация: 10.06.2011
Сообщений: 696
20.07.2014, 22:43  [ТС] 5
android.os.NetworkOnMainThreadException при запросе на сервер через этот способ.
0
NiRamz
211 / 211 / 33
Регистрация: 26.12.2010
Сообщений: 691
20.07.2014, 23:39 6
Лучший ответ Сообщение было отмечено Darth Coder как решение

Решение

так работу с сервером выносите в отдельный поток, можно использовать asynctask
1
20.07.2014, 23:39
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.07.2014, 23:39

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

Зависание библиотеки при запуске из потока
Имеется класс в классе поток, к классу подключена сторонняя библиотека. При...

Ошибка при повторном запуске потока
Занялся изучением работы потоков и написал следующий код (точнее взял с этого...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru