Периодически запускайте метод, используя расширения обработчика ktx.

ОБНОВЛЕНИЕ: Уточнение, я ищу расширение для запуска функции, например, каждые 1000 мс, без необходимости использовать handler.postDelayed дважды.

Недавно я начал использовать расширения android-ktx Kotlin. И я столкнулся с расширениями обработчика, которые очень аккуратно преобразуют

handler.postDelayed(runnable, delayInMillis)

в

handler.postDelayed(delayInMillis = 200L) {
    // some action
}

Проблема, с которой я столкнулся, заключается в том, как преобразовать следующий код для использования расширений ktx. Это вообще возможно?

handler.postDelayed(object : Runnable {
    override fun run() {
        doSomething()
        handler.postDelayed(this, 1000)
    }
}, 1000)

person Aleks Nine    schedule 23.05.2019    source источник


Ответы (1)


Это часть пакета core.ktx

вам нужно убедиться, что он включен в ваш файл gradle

implementation "androidx.core:core-ktx:1.1.0"

или более актуальная/последняя версия

Как только вы это сделаете, вы можете конвертировать:

handler.postDelayed(object : Runnable {
    override fun run() {
        doSomething()
    }
}, 1000)

to

handler.postDelayed(delayInMillis = 200L) {
    doSomething()
}

person inteist    schedule 01.02.2020
comment
Спасибо за ваш ответ, но я пытаюсь добиться выполнения задачи, например, каждые 1000 мс. Предоставленное вами решение запустит его только один раз. - person Aleks Nine; 19.05.2020