Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
11 / 11 / 2
Регистрация: 15.08.2011
Сообщений: 448

При запуске потока зависает приложение

16.05.2020, 22:55. Показов 1099. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Запускаю приложение и вижу белый экран, в чём моя ошибка? Вроде делал по примерам
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
public class MainActivity extends AppCompatActivity {
 
    private AppBarConfiguration mAppBarConfiguration;
    private AppThread appThread;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Toolbar toolbar = findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
        DrawerLayout drawer = findViewById(R.id.drawer_layout);
        NavigationView navigationView = findViewById(R.id.nav_view);
        // Passing each menu ID as a set of Ids because each
        // menu should be considered as top level destinations.
        mAppBarConfiguration = new AppBarConfiguration.Builder(
                R.id.nav_control, R.id.nav_control_sms, R.id.nav_setup)
                .setDrawerLayout(drawer)
                .build();
        NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment);
        NavigationUI.setupActionBarWithNavController(this, navController, mAppBarConfiguration);
        NavigationUI.setupWithNavController(navigationView, navController);
        appThread = new AppThread(); // запускаю поток
 
    }
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public class AppThread extends Thread{
    AppThread() {
        run();
    }
    @Override
    public void run() {
        try {
            while (!isInterrupted()) { 
             sleep(10000);
            }
        } catch (InterruptedException e) {
                e.printStackTrace();
        }
 
    }
 
 
}
Добавлено через 49 минут
Сам поток работает
Java
1
2
3
4
5
6
7
8
9
10
11
12
  @Override
    public void run() {
        Log.i(TAG, "запуск потока");
        while (!isInterrupted()) {
            try {
                Log.i(TAG, "работа");
                sleep(1000);
            } catch (InterruptedException e) {
               
            }
        }
    }
I/AppTheard: запуск потока
работа
I/AppTheard: работа
I/AppTheard: работа
I/AppTheard: работа
I/AppTheard: работа
I/AppTheard: работа
I/AppTheard: работа
I/AppTheard: работа
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
16.05.2020, 22:55
Ответы с готовыми решениями:

Форма не обновляется при запуске второго потока
Есть следующий код: public void Upd(){ l=new Ping(); thr=new Thread(l); thr.start(); while(thr.isAlive()){ ...

Зависает приложение при запуске скрипта Matlab
Всем привет! Столкнулся с такой проблемой. Имеется матлабовский скрипт function x=fis(a,b,c) ...

Зависает при запуске простое оконное приложение
Здравствуйте! Руками решил начать писать приложения на пурике после долгого отдыха, раньше по примерам писал, и сразу не вышло. Зависает...

5
11 / 11 / 2
Регистрация: 15.08.2011
Сообщений: 448
19.05.2020, 10:05  [ТС]
Почему так происходить, как тогда поток запускать?
Java
1
2
3
4
5
6
7
8
public class MainActivity extends AppCompatActivity {
    AppThread appThread;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        appThread = new AppThread();
    }
0
6 / 4 / 2
Регистрация: 05.05.2020
Сообщений: 57
19.05.2020, 11:13
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public class AppThread extends Thread{
    AppThread() {
        run();
    }
    @Override
    public void run() {
        try {
            while (!isInterrupted()) { 
Вот тут у тебя стоит sleep, и больше ничего тут нет. То есть, у тебя поток спит всё время и всё.
             sleep(10000);
            }
        } catch (InterruptedException e) {
                e.printStackTrace();
        }
 
    }
 
 
}
Наверное, нужно еще что-то выполнять, кроме команды sleep. Например, рисовать что-то или считать.
1
11 / 11 / 2
Регистрация: 15.08.2011
Сообщений: 448
19.05.2020, 12:38  [ТС]
Да это просто как пример, сама форма зависает при запуске потока

Добавлено через 3 минуты
Java
1
2
3
4
5
6
7
8
9
10
11
12
public void run() {
        Log.i(TAG, "старт");
        while (!isInterrupted()) {
            try {
                Log.i(TAG, "работа");
                sleep(1000);
            } catch (InterruptedException e) {
                Log.i(TAG, "исключение");
            }
        }
        Log.i(TAG, "стоп");
    }
сам поток работает, а вот сама активити зависает, всё белое кнопки не отображаются
I/TAG: старт
работа
I/TAG: работа
I/TAG: работа
I/TAG: работа
I/TAG: работа
I/TAG: работа

Добавлено через 38 минут
А запускал не так, нужно start() а не run()
0
6 / 4 / 2
Регистрация: 05.05.2020
Сообщений: 57
19.05.2020, 17:20
Получилось ?
1
11 / 11 / 2
Регистрация: 15.08.2011
Сообщений: 448
19.05.2020, 20:23  [ТС]
Да, получилось
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
19.05.2020, 20:23
Помогаю со студенческими работами здесь

Приложение (Электронная книга) зависает при запуске
ребята помогите я создаю электронную книгу на делфи xe7 и у меня примерно 50 form и на run нажимаю оно зависает на простом тож попроговал...

консольное приложение (при запуске приложение открывалось на весь экран)
Как сделать, чтобы при запуске приложение открывалось на весь экран?

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

Зависает интерфейс при выполнении отдельного потока
Как сделать так чтобы при выполнении потока не зависалось GUI? Вот небольшой код: using System; using...

Передача параметров при запуске потока
Подскажите почему нельзя опустить скобки при вызове анонимного метода при создании потока? new Thread(delegate()//Вот тут ...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! в-строка - входное арифметическое выражение в инфиксной(обычной). . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru