我是 Kotlin 的新手,并且设法修改了我的 Java 计时器类,以便我可以用两行代码来实现它。
我想知道是否有某种方法可以修改它并用一行代码实现它?
感谢您的任何建议。
两行实现:
fun testTimer() {
var tmr = MyTimer(1000, true)
tmr.onTimer = { doSometing() }
}
定时器类
class MyTimer {
private var running = false
private var repeatDelayMS: Int = 0
private val handler = Handler()
var onTimer:()-> Unit = {}
private val runnable = object : Runnable {
override fun run() {
if (running) {
onTimer()
if (repeatDelayMS > 0)
handler.postDelayed(this, repeatDelayMS.toLong())
else
stop()
}
}
}
constructor(repeatDelayMS: Int, runOnCreate: Boolean) {
this.repeatDelayMS = repeatDelayMS
if (runOnCreate)
start()
}
fun start() {
running = true
handler.postDelayed(runnable, repeatDelayMS.toLong())
}
fun stop() {
running = false
handler.removeCallbacks(runnable)
}
}
最佳答案
你可以做
val tmr = MyTimer(1000, true).apply {
onTimer = { doSomething() }
}
关于lambda - Kotlin 创建一个类的实例并在一行代码中实现回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51852291/