Kotlin - UI 更新之间的延迟

Kotlin - delay between UI updates

我创建了一个简单的 tik-tac-toe 游戏,并且有一些机器人可以和您一起玩。我试图在连续的机器人回合之间有一个延迟,否则所有连续的机器人移动都会同时出现在屏幕上

这是我在代码中尝试过的内容:

    // bot functionality
private fun botTurn(botDifficulty: Int) {
    var botMove = 100
    when (botDifficulty) {
        1 -> botMove = easyBot(confirmedMoves)
        2 -> botMove = mediumBot(activePlayer, confirmedMoves, maxPlayers)
        3 -> botMove = hardBot(activePlayer, confirmedMoves, maxPlayers)
        else -> Toast.makeText(this, "What sort of bot is this??", Toast.LENGTH_SHORT).show()
    }
    
    trueCellID = botMove
    // colour chosen segment
    setSegmentColor(trueCellID, -1, activePlayer)
    // TODO add 1-2 second delay after confirming move?
    Log.d("Wait", "start of wait $activePlayer")
    Thread.sleep(1000)
    Log.d("Wait", "end of wait $activePlayer")
    
    confirmMove()
}

使用 Thread.sleep 似乎只是将所有 UI 更新延迟到所有 botPlayer 睡眠都发生之后。我也尝试过使用 Handler.postDelayedGlobalScope.launchdelay 块以及 runOnUiThreadSystemClock.sleep(1000) - 这些都有同样的问题,就是所有的机器人都在等待,然后 UI 更新。

我什至尝试调整此解决方案 - how to wait for Android runOnUiThread to be finished? 但得到了相同的结果 - 延迟很大然后所有 UI 更新。

是否有解决此问题的方法,还是我错过了一些简单的事情?

正如 broot 在评论中建议的那样,将 setSegmentColor()confirmMove() 都放在 postDelayed() 块内实现了 botTurn()

之间的预期延迟
val botDelay = 1500L

        Handler().postDelayed(
            {
                // colour chosen segment then save move
                setSegmentColor(botMove, -1, activePlayer)
                confirmMove(botMove)
            },
            botDelay
        )