首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在kotlin中执行后重复一种方法

在kotlin中执行后重复一种方法
EN

Stack Overflow用户
提问于 2022-01-11 17:54:11
回答 1查看 179关注 0票数 0

我想在方法执行之后再调用它。

现在我有了方法playSimulation(),它做一些计算和输出。在它执行一次之后,我需要无休止地重复它。

这是我的代码片段:

代码语言:javascript
复制
     private fun playSimulation() {
     // do some calculations
     Timer().schedule(3000) {
                playSimulation()
            }
      }

这个解决方案不起作用,因为我会遇到并发问题。有时我很幸运,程序没有问题,但在一半的情况下,我得到了一个例外。

代码语言:javascript
复制
Exception in thread "Timer-3" java.lang.ArrayIndexOutOfBoundsException: 9

我的问题是如何解决这个问题,最好的架构方法是什么?提前谢谢。

EN

回答 1

Stack Overflow用户

发布于 2022-01-11 18:01:13

尝尝这个

代码语言:javascript
复制
private fun myMethod() {
        
    // do stuff every 1000 milliseconds
       
    Handler(Looper.getMainLooper()).postDelayed({
        myMethod()
    }, 1000)
}

如果需要在某个时候取消它,则需要保留对Runnable和Handler的引用:

代码语言:javascript
复制
private fun myMethod() {
        
        // do stuff every 1000 milliseconds

        val handler = Handler(Looper.getMainLooper())
        val runnable = { myMethod() }
        
        handler.postDelayed(runnable, 1000)
        
        handler.removeCallbacks(runnable)
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70671306

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档