У меня есть поток, работающий в службе ... способ его запуск выглядит примерно так:Остановка нити в качестве службы Android
class Consumer implements Runnable {
public void run() {
while(!finished){
foo();
}
cleanUp();
}
...
}
Я начинаю нить в onStartCommand
методы обслуживания и Я хочу закрыть его, когда служба прекратится. Теперь, чтобы остановить поток, я устанавливаю переменную finished
в true
(в методе onDestroy
).
public void onDestroy() {
...
finished = true;
...
}
(оказывается, что он прекрасно работает, когда я отладки программы ->cleanUp
будет называться, как и ожидалось)
Без ее отладки, cleanUp
не будет называться. Кто-нибудь может мне это объяснить? Где моя ошибка? Спасибо
Неосложненный многопоточный доступ к готовой переменной, вероятно, является большой частью вашей проблемы. –