Глобальная переменная для объекта CountDownTimer - PullRequest
0 голосов
/ 03 апреля 2020

Итак, я сделал таймер обратного отсчета, используя

object : CountDownTimer(waktu.toLong(), 1000)

Теперь мне нужно создать переменную для отмены этого обратного отсчета, например:

var timer = object : CountDownTimer(waktu.toLong(), 1000)

Проблема в том, что я не могу получить доступ к этой переменной из другой функции. У меня вопрос, как сделать глобальную переменную для этого объекта: countdowntimer в kotlin. Я не уверен насчет типа переменной, который я должен сделать. Спасибо

Ответы [ 2 ]

3 голосов
/ 03 апреля 2020

вы можете использовать объект-компаньон для доступа к вашему объекту из нужного вам места.

для получения дополнительной информации, вы можете обратиться к этому

создать свойство для таймер

companion object {
    lateinit var timer: CountDownTimer
}

Инициализировать свойство и запустить

timer = object : CountDownTimer(YOUR_MAX_VALUE, 1000) {
        override fun onFinish() {
        // perform task on finish
        }
        override fun onTick(countdownTick: Long) {
        // perfrom tick event 
        }
    }.start()

И отменить таймер, когда задание завершено sh ИЛИ активность / фрагмент уничтожен.

override fun onBackPressed() {
super.onBackPressed()
timer.cancel()

} ​​

во избежание утечек памяти.

0 голосов
/ 03 апреля 2020

Kotlin предоставляет выражение companion object для работы с глобальной переменной.

Вы можете сделать это следующим образом.

companion object {
        var timer : CountDownTimer ? = null
    }

Инициализируйте таймер в вашем классе утилит или деятельности.

timer = object : CountDownTimer(Long.MAX_VALUE, 1000) {
                                override fun onFinish() {
                                    // Cancel the timer
                                }

                                override fun onTick(millisUntilFinished: Long) {
                                    // Handle your tick event
                                }
                            }

И запустите таймер

timer?.start()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...