首页 > 解决方案 > 创建一个在每个时间间隔运行的函数并停止该函数在 Android Studio 中与 Kotlin 一起运行

问题描述

我想创建一个每 50 毫秒运行一次的函数(相当于setInterval在 JS 中)。到目前为止,这就是我所拥有的:

val mainHandler = Handler(Looper.getMainLooper())
mainHandler.post(object: Runnable {
    override fun run() {
        progressBar.progress += 1
        mainHandler.postDelayed(this, 50)
    }
})

它可以工作,但是当进度达到时,如何阻止该run()功能进一步运行100?另外,当我点击一个按钮(比如在 JS 中)时,有没有办法取消run并重置?作为参考,我想要这个:progress0clearInterval

buttonView.setOnClickListener {
    stopRunFromRunning()
    resetProgressTo0()
}

progress.onReach100 {
    stopRunFromRunning()
}

标签: androidkotlinandroid-handlerandroid-looper

解决方案


将可运行对象分配给变量,您可以从处理程序的回调中删除

val progressBar = findViewById(R.id.progress_bar)
val btn = findViewById(R.id.btn)

val handler = Handler(Looper.getMainLooper())
val runnable = Runnable {
    override public fun run() {
     progressBar.progress+=1
       if(progressBar.progress<100)
          handler.postDelayed(this, 50) 
    }
}

handler.post(runnable, milliseconds)

btn.setOnClickListener {
    handler.removeCallbacks(runnable)
    progressBar.progress=0
}


推荐阅读