将无限期运行的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秒重复一个动作