J'ai du code comme celui-ci dans Java qui surveille un certain fichier:
private Handler mHandler = new Handler();
private final Runnable monitor = new Runnable() {
public void run() {
// Do my stuff
mHandler.postDelayed(monitor, 1000); // 1 second
}
};
Voici mon code kotlin:
private val mHandler = Handler()
val monitor: Runnable = Runnable {
// do my stuff
mHandler.postDelayed(whatToDoHere, 1000) // 1 second
}
Je ne comprends pas ce que Runnable
je devrais passer à mHandler.postDelayed
. Quelle est la bonne solution? Une autre chose intéressante est que le kotlin vers Java se bloque lorsque je fournis ce code.
Les expressions lambda n'ont pas this
, mais les expressions d'objet (classes anonymes) en ont.
object : Runnable {
override fun run() {
handler.postDelayed(this, 1000)
}
}
Une approche légèrement différente qui peut être plus lisible
val timer = Timer()
val monitor = object : TimerTask() {
override fun run() {
// whatever you need to do every second
}
}
timer.schedule(monitor, 1000, 1000)