Вы можете использовать класс CountDownTimer
, который будет выполнять обратный отсчет.
Извлечение фрагмента Kotlin :
private const val COUNT_DOWN_TIME = 5secs
private const val COUNT_DOWN_TIME = 1sec
class TimeCounter : CountDownTimer(val COUNT_DOWN_TIME,val COUNT_DOWN_INTERVAL) {
override fun onFinish() {
// This method will be called after completion of COUNT_DOWN_TIME
// Do your work here once the limit of 5secs is completed.
}
override fun onTick(timeLeftUntilFinish: Long) {
//this method is called every COUNT_DOWN_INTERVAL, until the timer is finished
//So if COUNT_DOWN_INTERVAL = 1sec, this method is called every 1sec till the timer is completed.
}
}
Вы можете реализовать его в родительском Activity
как внутренний класс или можете объявить его независимо в соответствии с вашими потребностями.
Поскольку вы его реализовали, вы полностью ответственны за запуск таймера
Запуск CountDownTimer
:
param1: COUNT_DOWN_TIME // время, в течение которого вы хотите вести обратный отсчет
param2: COUNT_DOWN_INTERVAL // время после каждого из которых вы получаете уведомление до обратного отсчета
val mTimer = CountDownTimer(COUNT_DOWN_TIME ,COUNT_DOWN_INTERVAL ) //create Timer Instance
mTimer.start() //start the timer
Однако, остановка таймера имеет два способа
Счет- истечение обычного времени (вы успешно посчитали в течение 5 секунд)
По некоторым причинам вы самостоятельно отменяете таймер.
Дляотмена CountDownTimer
:
mTimer.cancel() // stops Timer as soon as called, irrespective whether count-down was pending.
Примечание: это само собой разумеется, но все же используйте тот же объектt для запуска и остановки таймера.