как останавливать и запускать потоки в Android, которые работают в фоновом режиме

У меня есть два веб-сервиса, и они работают в фоновом режиме по потокам. я часто проверяю свое сетевое соединение, если сеть не удалась, я показываю диалоговое окно с кнопкой «RESYNC».

мое намерение состоит в том, что когда я нажимаю кнопку RESYNC, незавершенные потоки должны начинаться снова.

я использовал thread.interupt(), чтобы остановить поток, и thread.start, чтобы начать снова.

это не работает нормально, оно показывает ошибку, как будто ваш поток уже запущен.

может ли кто-нибудь помочь мне, как остановить поток и перезапустить его.

благодаря.


person user1430138    schedule 15.11.2012    source источник
comment
Очень много вопросов по этой теме. пожалуйста, проведите исследование, прежде чем задавать новый вопрос.   -  person Kartihkraj Duraisamy    schedule 15.11.2012


Ответы (3)


Не используйте thread.stop() для завершения потоков.

Вы можете использовать изменчивый флаг:

private volatile boolean running = true;

public void stop() {
  running = false;
}

public void run() {
  while(running) {
    // your code
  }
}
person Sergey Dmitriev    schedule 15.11.2012

Поток нельзя перезапустить, его можно остановить stop();

Чтобы начать снова, вам нужно создать новый экземпляр потока, а затем вызвать start.

person Rasel    schedule 15.11.2012

Имейте некоторое время (условие) в вашем методе run(). Внутри вашего цикла while находятся вещи, которые вы хотите, чтобы ваш поток делал во время работы. Измените значение вашей условной переменной на false с помощью метода установки в вашем потоке. Метод stop() в java устарел.

person Axel    schedule 15.11.2012