作为标题,在Kotlin中是否有方法在延迟(例如1秒)后调用函数?


当前回答

需要导入以下两个库:

import java.util.*
import kotlin.concurrent.schedule

然后这样使用它:

Timer().schedule(10000){
    //do something
}

其他回答

需要导入以下两个库:

import java.util.*
import kotlin.concurrent.schedule

然后这样使用它:

Timer().schedule(10000){
    //do something
}

如果你正在使用最新的Android api, Handler空构造函数已经被弃用,你应该包括一个循环程序。你可以很容易地通过loop . getmainlooper()得到一个。

    Handler(Looper.getMainLooper()).postDelayed({
        //Your code
    }, 2000) //millis

我建议使用kotlin协程,如果你想取消它。它结构简单,重量轻。

fun repeatFun(): Job {
    return coroutineScope.launch {  
        while(isActive) {
            //do your work here
            delay(1000)
        }
    }
}

//start the loop
val repeatFun = repeatRequest()

//Cancel the loop
repeatFun.cancel()

如果你在一个带有viewModel作用域的片段中,你可以使用Kotlin协程:

    myViewModel.viewModelScope.launch {
        delay(2000)
        // DoSomething()
    }

另一种创造冗余工作的方法;这并不要求函数挂起。

   val repeatableJob = CoroutineScope(Dispatchers.IO).launch {
        while (true) {
            delay(1000)
        }
    }

完成后取消- repeatableJob.cancel ()