处理程序每​​5秒运行一次任务Kotlin

我想每5秒运行一段代码。 我有一个处理程序实现这个麻烦。 Kotlin如何做到这一点? 这是我到目前为止。 还要注意,variablesTimer_Preview是一个Handler。

我的代码

由于您不能引用当前所在的lambdaexpression式,因此您在定义要分配给它的lambdaexpression式时无法引用您定义的属性,所以最佳解决方案是一个objectexpression式 :

 val runnableCode = object: Runnable { override fun run() { handler.postDelayed(this, 5000) } } 

假设这个属性不是一个var因为当这个自我调用正在发生的时候你真的想改变它。

由于Kotlin还没有允许递归lambdaexpression式(见KT-10350 ),所以你必须使用其他的结构,比如@ zsmb13的答案中的对象expression式,或者下面的普通函数

 fun StartTimer() { Timer_Preview.postDelayed(Runnable { runnable() }, 5000) } fun runnable() { //Code here // Run code again after 5 seconds Timer_Preview.postDelayed(Runnable { runnable() }, 5000) } 

然而,在你的具体情况下,看起来你可以再次调用StartTimer()重新设置定时器,假设它不做任何事情:

 private val RunnableCode = Runnable { //Code here //Run code again after 5 seconds StartTimer() }