Я работаю над собственной проблемой кодирования в Android, где я создаю простое приложение таймера, которое позволяет пользователю отсчитывать определенное количество времени.
У меня есть одно действие, которое показывает таймер MainActivity
(таймер также может быть запущен из этого действия) и одно действие, которое позволяет пользователю выбрать время обратного отсчета и отправить его (SelectActivity
).
Я использую ViewModel
, который содержит настроенный класс CountDownTimer
. Пользователь может в любой момент вернуться к SelectActivity
и отправить новое время. В моем коде я явно установил таймер на null
, как вы можете видеть ниже (не лучший код, но я надеюсь, что идея встречается). Я добавил model.timer = null
потом.
Проблема: если пользователь отправляет новое время, MainActivity
теперь показывает 2 счетчика, которые ведут обратный отсчет в быстрой последовательности (оставшееся время отображается в одном представлении).
Я предполагал, что, установив таймер в ноль, я избавлюсь от старого таймера. Это предположение неверно? Я неправильно подхожу к этой проблеме?
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
// Check which request we're responding to
if (requestCode == 1) {
// Make sure the request was successful
model.timer = null
model.timer = MyTimer(data?.getLongExtra("Message",11) ?: 0, 10, true).apply {
setListener(model.timerListener)
}
model.timerStatus.value = StateTimer.INITIALIZED
}
}