Kotlin协程UI不冻结

时间:2019-09-11 20:28:39

标签: android kotlin android-livedata kotlin-coroutines

我最近检查了实时数据协程,但发现某些我无法理解的内容。为什么这段代码(观察到)为什么不冻结UI?

    val lv =
    liveData (context=Dispatchers.Main){
        var x = 0
        while (true){
            emit(x++)
            delay(1000)
            println(Thread.currentThread().name)
        }
    }

谢谢。

1 个答案:

答案 0 :(得分:4)

var seeking = false; var maxPlayPosition = 0; jwplayer().on('time', function (event) { if (!seeking) { maxPlayPosition = Math.max(event.position, maxPlayPosition); } }).on('seek', function (event) { seeking = true; }).on('seeked', function (event) { var pos = jwplayer().getPosition(); if (pos > maxPlayPosition) { jwplayer().seek(maxPlayPosition); } seeking = false; }); 不会阻塞线程。它只是暂停协程并在一秒钟后恢复它。您可以将delay更改为delay,由于Thread.sleep(1000)将阻塞线程,因此您的用户界面将被冻结。