'Convert indefinitely running Runnable from java to kotlin
I have some code like this in java that monitors a certain file:
private Handler mHandler = new Handler();
private final Runnable monitor = new Runnable() {
    public void run() {
        // Do my stuff
        mHandler.postDelayed(monitor, 1000); // 1 second
    }
};
This is my kotlin code:
private val mHandler = Handler()
val monitor: Runnable = Runnable {
    // do my stuff
    mHandler.postDelayed(whatToDoHere, 1000) // 1 second
}
I dont understand what Runnable I should pass into mHandler.postDelayed. What is the right solution? Another interesting thing is that the kotlin to java convertor freezes when I feed this code.
Solution 1:[1]
Lambda-expressions do not have this, but object expressions (anonymous classes) do.
object : Runnable {
    override fun run() {
        handler.postDelayed(this, 1000)
    }
}
Solution 2:[2]
A slightly different approach which may be more readable
val timer = Timer()
val monitor = object : TimerTask() {
    override fun run() {
        // whatever you need to do every second
    }
}
timer.schedule(monitor, 1000, 1000)
Solution 3:[3]
Lambda-expressions do not have this, but object expressions (anonymous classes) do. Then the corrected code would be:
private val mHandler = Handler()
val monitor: Runnable = object : Runnable{
 override fun run() {
                   //any action
                }
                //runnable
            }
 mHandler.postDelayed(monitor, 1000)
Solution 4:[4]
runnable display Toast Message "Hello World every 4 seconds
//Inside a class main activity
    val handler: Handler = Handler()
    val run = object : Runnable {
       override fun run() {
           val message: String = "Hello World" // your message
           handler.postDelayed(this, 4000)// 4 seconds
           Toast.makeText(this@MainActivity,message,Toast.LENGTH_SHORT).show() // toast method
       }
   }
    handler.post(run)
}
Solution 5:[5]
var handler=Handler() 
handler.postDelayed(Runnable { kotlin.run { 
// enter code here
} },2000)
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source | 
|---|---|
| Solution 1 | |
| Solution 2 | Hobo Joe | 
| Solution 3 | taranjeetsapra | 
| Solution 4 | KaZaiya | 
| Solution 5 | Robert Columbia | 
