У меня есть таймер, который выполняет TimerTask каждые 30 секунд. Я хочу, чтобы таймер запускал новую задачу TimerTask, если отображается активность, т. Е. Если пользователь получает телефонный звонок или запускает новую операцию, таймер останавливается. Затем мне нужен таймер для перезапуска, когда действие перезапускается и фокусируется.
Теперь это должно быть легко, я переопределяю метод " onWindowFocusChanged (boolean hasFocus) " и запускаю или останавливаю таймер в зависимости от значения hasFocus . Я запускаю таймер, чтобы каждый раз создавать новый объект Timer и TimerTask, а способ остановки таймера - вызывать метод cancel () для объекта Timer и устанавливать для таймера значение null.
Моя проблема в том, что это не всегда работает, если я запускаю действие с таймером и быстро переключаю ориентации (для запуска / остановки действия), я нахожу, что таймер не всегда отменяется, и в результате я запускаю несколько таймеров TimerTasks с постоянно увеличивающейся скоростью.
Я что-то упускаю здесь очевидное? Любая помощь будет принята с благодарностью.
Спасибо