Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/188.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kotlin,Android-如何在runnable中发布相同的runnable?_Android_Kotlin_Runnable - Fatal编程技术网

Kotlin,Android-如何在runnable中发布相同的runnable?

Kotlin,Android-如何在runnable中发布相同的runnable?,android,kotlin,runnable,Android,Kotlin,Runnable,我想将runnable发布到runnable中的视图对象,目前我被困在这里 var runnable = Runnable { if(numLinesToDraw >= amplititudes.size){ } else { numLinesToDraw = numLinesToDraw ++ invalidate() postDelayed({

我想将runnable发布到runnable中的视图对象,目前我被困在这里

 var runnable = Runnable {
        if(numLinesToDraw >= amplititudes.size){

        }
        else
        {
            numLinesToDraw = numLinesToDraw ++
            invalidate()
            postDelayed({

            },2000)
        }
    }

    postDelayed(runnable,2000)
如您所见,runnable中有一个
postDelayed
方法。我想做的是再次发布相同的runnable,等等。我应该在这里添加什么

       postDelayed({

        },2000)

在Kotlin 1.2+中,您可以为
runnable
定义本地
lateinit var
,然后使用使用变量的
runnable
对其进行初始化:

lateinit var runnable: Runnable
runnable = Runnable {
    /* ... */
    postDelayed(runnable,2000)
}
这样做,

var myRunnable: Runnable = object : Runnable {
    override fun run() {
        progressHandler.postDelayed(this, 100) // here is self calling
    }
}

是否使用此?至少对Java来说是这样的
postDelayed(this,2000)
如果这是一个定期回调,我也会在runnable的开头添加
removeCallbacks(this)
,只是为了安全起见,它永远不会“加倍”并且运行得太频繁。这个解决方案很有效,如果使用lambda,则找不到this指针。