You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Kotlin中如何在Runnable内部重复提交自身?

解决Runnable内部重复提交自身的问题

嘿,我来帮你搞定这个问题!你现在想在Runnable内部重复提交它自己对吧?其实很简单,直接把定义好的runnable对象传进去就行,但这里还有几个小细节得注意,不然可能达不到预期效果。

首先先纠正你代码里的一个小错误:numLinesToDraw = numLinesToDraw ++ 这行是无效的。因为后置自增运算符++会先返回变量的原始值,再完成自增操作,所以这行代码相当于把numLinesToDraw原来的值又赋值回去,等于没做自增。你应该改成numLinesToDraw++或者numLinesToDraw += 1。

修正后的完整代码如下:

var runnable = Runnable { 
    if (numLinesToDraw >= amplititudes.size) {
        // 这里可以添加终止逻辑,比如不再继续重复提交任务
        return@Runnable
    } else {
        numLinesToDraw++ // 修正自增写法
        invalidate()
        // 直接传入已定义的runnable对象,实现重复提交自身
        postDelayed(runnable, 2000)
    }
}
postDelayed(runnable, 2000)

逻辑说明

  • 每次Runnable执行时,先判断是否已经达到绘制的上限(numLinesToDraw >= amplititudes.size),如果达到就直接返回,停止后续的重复提交;
  • 如果没达到上限,就自增计数、调用invalidate()触发View重绘,然后通过postDelayed(runnable, 2000)把自身再次提交到View的消息队列,实现每2秒重复执行一次的效果。

额外提醒

如果你的View后续可能被销毁(比如Activity退出),记得要调用removeCallbacks(runnable)来取消这个重复任务,避免内存泄漏问题。

内容的提问来源于stack exchange,提问作者Dishonered

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 07:47:17