处理程序每5秒运行一次任务Kotlin
我想每5秒运行一段代码。我在处理程序中遇到了麻烦。 Kotlin如何做到这一点?这是我到目前为止。还要注意,变量Timer_Preview是一个Handler。处理程序每5秒运行一次任务Kotlin
既然你不能引用拉姆达目前在你,你不能引用你当你确定你分配给它的拉姆达定义属性时,这里最好的解决方案是一个object
expression:
val runnableCode = object: Runnable {
override fun run() {
handler.postDelayed(this, 5000)
}
}
假设这个属性不是var
因为你真正想要,而这种自我呼叫正在发生的事情去改变它。
谢谢,这正是我一直在寻找的!很好的 –
我是否正确地假设你可以创建一个默认处理程序(即val处理程序:Handler = Handler()),然后启动它(即handler.post(runnableCode)),它会每隔5秒运行一次你放入运行块(在handler.postDelayed之前...)? –
我相信会有效,是的。 – zsmb13
由于科特林还不允许递归lambda表达式(见KT-10350),您必须使用其他结构,如对象表述为@ zsmb13的答案,还是普通的功能如下
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()
}
你可以传递一个'Callable'你'Handler'和'sendMessageDelayed'递归。 –
请把代码放在问题中,而不是链接到它,因为a)不是每个人都可以从工作中得到imgur和b)链接可能会过期,并且这个问题在将来将没有用处。 – Todd
谢谢你让我知道! –