Форум программистов, компьютерный форум, киберфорум
Наши страницы

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Darth Coder
277 / 258 / 69
Регистрация: 10.06.2011
Сообщений: 695
#1

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

19.07.2014, 23:21. Просмотров 457. Ответов 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
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Форма не обновляется при запуске второго потока (Программирование Android):

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

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

Клиент-сервер: Если запустить первый поток то он работает, при запуске второго потока выходит ошибка - C++ Linux
Здравствуйте, пытаюсь разбить код на два потока. 1) Поток прием клиентов. void login_server() { struct sockaddr_in saddr; ...

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

Зависание библиотеки при запуске из потока - C#
Имеется класс в классе поток, к классу подключена сторонняя библиотека. При запуске функции библиотеки в потоке этого класса таймер...

Ошибка при повторном запуске потока - Visual Basic .NET
Занялся изучением работы потоков и написал следующий код (точнее взял с этого форума кусок работы с потоками): На форме две кнопки и один...

5
NiRamz
211 / 211 / 16
Регистрация: 26.12.2010
Сообщений: 691
20.07.2014, 13:59 #2
так нельзя .. работать с UI можно только в основном потоке, если же необходимо сделать какие то действия из вне, вызывайте runOnUiTread .. Да и .sleep() не стоит вызывать, если нужна задержка используем либо таймер, но я лично предпочитаю создавать Handler и вызывать postDelayed.
0
Darth Coder
277 / 258 / 69
Регистрация: 10.06.2011
Сообщений: 695
20.07.2014, 16:06  [ТС] #3
прочитал про runOnUiThread, классы Handler и AsyncTask, но так и не понял, как заставить форму обновляться постоянно (иначе стандартый прогрессбар не будет крутиться) И забыл написать, что второй поток никоим образом не изменяет форму,только записывает ответ от сервера в переменную, откуда главный поток и выводит ответ на форму
0
NiRamz
211 / 211 / 16
Регистрация: 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
277 / 258 / 69
Регистрация: 10.06.2011
Сообщений: 695
20.07.2014, 22:43  [ТС] #5
android.os.NetworkOnMainThreadException при запросе на сервер через этот способ.
0
NiRamz
211 / 211 / 16
Регистрация: 26.12.2010
Сообщений: 691
20.07.2014, 23:39 #6
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
так работу с сервером выносите в отдельный поток, можно использовать asynctask
1
20.07.2014, 23:39
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.07.2014, 23:39
Привет! Вот еще темы с ответами:

Зависает форма при создании потока - C++ Builder
Здравствуйте форумчане. Вчера тестировал работу 200 одновременных потоков на C++ Builder 6, все работало отлично. Сегодня форма...

1C 8.x Неверный формат потока данных при запуске - 1С
Всех приветствую. Возникла такая проблема - при запуске 1С( версия 8.2, win 7pro) конфигурация загружается, подвисает на пару секунд, и...

Перезапуск таймера при повторном запуске потока - C++
#include <condition_variable> #include <iostream> #include <random> #include <thread> #include <mutex> #include <queue> ...

Форма и контролы неактивны при исполнении потока - C#
Уважаемые форумчане! Может, кто подскажет -что не так? На форме две кнопки и dataGridView. dataGridView загружается из базы. ...


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

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

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