Почему эта тема не работает?
825 просмотра
1 ответ
Я написал этот код, чтобы попробовать темы на Android, но он не работает.
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Thread t = new Thread() {
@Override public void run() {
int i = 0;
while(true) {
i += 5;
if(i == 1000000)
break;
}
}
};
t.run();
}
У меня есть некоторый графический интерфейс, и когда поток работает (я <1000000), графический интерфейс зависает. Но когда поток завершен (я == 1000000) все работает нормально. В чем дело?
// Извините за мой английский
Автор: micnyk Источник Размещён: 12.11.2019 09:19Ответы (1)
6 плюса
Вы звоните, t.run()
что означает, что вы выполняете весь код в потоке пользовательского интерфейса без запуска нового потока.
Вы должны вызвать, t.start()
который вместо этого запустит новый поток и выполнит код в run
методе в этом новом потоке.
(Я бы также рекомендовал внедрить Runnable
и затем передать Runnable
новый Thread
конструктор, а не переопределять run
, просто для разделения интересов. Здесь это не изменит поведение, но это более чистый способ думать об этом, IMO.)
Вопросы из категории :
- android Насколько хорошо отражает эмулятор Android Phone?
- android Как сохранить состояние активности Android с помощью сохранения состояния экземпляра?
- android Android: доступ к дочерним представлениям из ListView
- android Как вызвать SOAP веб-сервис на Android
- android Как вы форматируете дату и время в Android?
- android Android: Получение имени файла с камеры?
- android Перезапуск активности при ротации Android
- android Проблема с нехваткой памяти при загрузке изображения в растровый объект
- android Отправьте приложение с базой данных
- android Как удалить контакт программно в Android
- multithreading Что такое состояние гонки?
- multithreading Что такое тупик?
- multithreading Что такое мьютекс?
- multithreading Как начать потоки в plain C?
- multithreading Потокобезопасный foreach перечисление списков
- multithreading Когда ключевое слово volatile должно использоваться в C #?
- multithreading Безопасно ли получать значения из java.util.HashMap из нескольких потоков (без изменений)?
- multithreading Что такое «потоковое локальное хранилище» в Python и зачем оно мне нужно?
- multithreading Вы когда-нибудь использовали ключевое слово volatile в Java?
- multithreading Как ждать отмены BackgroundWorker?