Исходя из вашего кода, похоже, что вам нужен рабочий с циклом, чтобы он продолжал работать до тех пор, пока главный поток не скажет ему прекратить работу, что делается с помощью worker.cancel(true);
. Проблема в том, что вы отменяете его, но ничего не делаете, чтобы сигнализировать сам цикл о прекращении итерации. Чтобы это исправить, вы должны изменить
for (; ; ) {
publish(String.valueOf(Calendar.getInstance().getTimeInMillis()));
}
до
while(!isCancelled()){
publish(String.valueOf(Calendar.getInstance().getTimeInMillis()));
}
Обратите внимание на фразу isCancelled из документации по Java:
isCancelled()
Возвращает true, если это задание было отменено до его нормального завершения.
Поскольку цикл никогда не закрывается сам по себе, он никогда не завершится нормально.