Kotlin,Android-如何在runnable中发布相同的runnable?
我想将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({
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指针。