Для запуска вашей функции каждую секунду с сопрограммами:
var scope = MainScope()
fun startUpdates() {
scope.launch {
while(true) {
getData()
delay(1000)
}
}
}
fun stopUpdates() {
scope.cancel()
scope = MainScope()
}
Это, однако, не очень хорошая идея. Функция будет вызываться через секунду после ее завершения, но поскольку сетевой запрос выполняется асинхронно, это может быть запланировано намного.
Например, если сетевой запрос занимает 5 секунд, он будет запущен еще 4 раза до Первый даже закончен!
Чтобы исправить это, вы должны выполнить сетевой запрос с блокирующим api, а затем использовать сопрограммы для выполнения его в фоновом потоке в функции приостановки.
Но в целом это, вероятно, слишком много, чтобы измениться. Просто поставьте:
Handler().postDelayed({
getdata()
}, 1000)
в конце updateui
и покончите с этим.
Таким образом, это будет запланировано через одну секунду после его завершения.