2014-01-14 2 views
0

Я создаю приложение, которое перемещает объект по экрану, и вы можете управлять его направлением с помощью кнопок. Я хочу, чтобы, щелкнув по кнопке, он сразу отреагирует. Проблема в том, что если вы нажмете, когда он уже запустил while в run() Thread, он сначала переместит объект, поскольку он должен был быть до щелчка, и только тогда он будет реагировать на щелчок.Перезапуск run() потока

Так что я думал, что если есть способ, что при нажатии он сразу остановит функцию run() и перезапустит ее, возможно, перезапустив поток.

Есть ли способ?

ответ

0

В Java нить не может быть перезапущена. Тем не менее, вы можете контактировать то, что делает поток.

Кроме того, прерывание любого кода немедленно невозможно и было бы очень опасно, если это было возможно.
Таким образом, вы должны разработать свой код, чтобы часто проверять, нужно ли отменять выполнение, возможно, сигнализируется Thread.interrupted().

Из того, что я понял о вашей реальной проблеме, вам не нужно перезапускать run(). Угадав небольшую информацию, которую вы нам дали, я рекомендую взглянуть на Animators.

Другим вариантом является постоянное перемещение объекта и установка скорости (x и y) в секунду. Поэтому вам не нужно будет перезапускать, но только изменять эти переменные.

Если вам нужна дополнительная информация или я не понял ваш вопрос, прокомментируйте.

Смежные вопросы