Прежде всего, я знаю, что есть много вопросов, связанных с этим, но я не нашел то, что мне нужно.Как убить нить при нажатии кнопки «Домой»
Почти в каждом ответе они сказали, что вы должны иметь запущенный цикл в методе run()
(который у меня есть), и когда вы хотите, чтобы убить ваш Thread
вы только должны установить boolean
состояние while()
в false
. Я это понимаю, но в моем случае каждая итерация занимает много секунд, потому что это связано с GUI Thread
. В принципе, этот thread
ждет, пока пользователь нажмет кнопку, а затем он сделает больше вещей, например, воспроизводя некоторые звуки.
Так что моя проблема в том, что подмигнули невозможно остановить thread
установки boolean
в false
, потому что он ждет пользователя, поэтому, когда пользователь нажимает на кнопку домой в Thread
продолжает свое выполнение, (ожидая весовую ввод), а через несколько секунд (когда пользователь нажимает кнопку, истекло) воспроизводит звук.
Есть ли другой способ убить thread
в методе onStop
или что-то в этом роде?
Заранее спасибо.
Не зная андроид, я бы сказал, что на самом деле это должно быть возможно, что при обнаружении событие пользователя с помощью кнопки «домой», вы убиваете поток. Если вы не можете напрямую убить поток, по крайней мере, вы должны иметь возможность выполнить ping класс (шаблон наблюдателя), в котором метод ожидает ввода пользователя, и изменить переменную, указав, что пользователь перемещается. (Сохраняйте логическое или что-то, что неверно, когда поток больше не запускается). Но я не знаком с потоками android, чтобы сказать, насколько это возможно или даже разумно :-) –
Возможно, вам стоит проверить это условие цикла не один раз, а, возможно, до/после каждого из этих трудоемких шагов ?! – GhostCat
Можете ли вы объяснить, почему вы используете поток, чтобы ждать события нажатия кнопки, а не просто устанавливать onClickListener() на кнопку? – Egor