MainActivity.kt
private val jobCheckVersion = CoroutineScope(Dispatchers.Main).launch(start = CoroutineStart.LAZY) {
viewModel.syncData()
viewModel.startTimer()
return@launch
}
//MainActivity页面启动初始化地方开始这个协程任务
jobCheckVersion.start()
MainViewModel.kt
// 定时任务:周期性执行
private var timerRunning = false
fun startTimer() {
if (timerRunning) {
return
}
timerRunning = true
viewModelScope.launch {
withContext(Dispatchers.IO) {
while (timerRunning) {
delay(1000*60:) // 每隔 60 秒钟执行一次syncData()任务
syncData(showLoadingTips = false)
}
}
}
}
fun endTimer() {
timerRunning = false
}
override fun onCleared() { //页面销毁时,停止定时任务
releaseHandlerThread()
endTimer()
super.onCleared()
}