将无限期运行的Runnable从java转换为kotlin
我在java中有这样的代码来监视某个文件:
private Handler mHandler = new Handler(); private final Runnable monitor = new Runnable() { public void run() { // Do my stuff mHandler.postDelayed(monitor, 1000); // 1 second } };
这是我的kotlin代码:
private val mHandler = Handler() val monitor: Runnable = Runnable { // do my stuff mHandler.postDelayed(whatToDoHere, 1000) // 1 second }
我不明白什么Runnable
我应该进入mHandler.postDelayed
。 什么是正确的解决方案? 另一个有趣的事情是,当我喂这个代码时,java转换器的kotlin冻结了。
Lambda表达式没有this
,但是匿名类可以。
object : Runnable { override fun run() { handler.postDelayed(this, 1000) } }
稍微不同的方法可能更具可读性
val timer = Timer() val monitor = object : TimerTask() { override fun run() { // whatever you need to do every second } } timer.schedule(monitor, 1000, 1000)
来自: 在java中每2秒重复一个动作