Я хочу опубликовать runnable для объекта просмотра внутри runnable, в настоящее время я застрял здесь.
var runnable = Runnable {
if (numLinesToDraw >= amplititudes.size){
}
else
{
numLinesToDraw = numLinesToDraw ++
invalidate()
postDelayed({
},2000)
}
}
postDelayed(runnable,2000)
Как видите, внутри runnable есть метод postDelayed. Я хочу снова опубликовать тот же запускаемый файл и так далее. Что мне добавить сюда?
postDelayed({
},2000)
Если это периодический обратный вызов, я бы также добавил removeCallbacks(this) в начале runnable, на всякий случай, он никогда не «удваивается» и не запускается слишком часто.
В Kotlin 1.2+ вы можете определить локальный lateinit var для runnable, а затем инициализировать его с помощью 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
}
}
Это решение работает, если использовать лямбда, указатель это не может быть найден.
использовать
this? По крайней мере, для Java это работает.postDelayed(this,2000)