我最近检查了实时数据协程,但发现某些我无法理解的内容。为什么这段代码(观察到)为什么不冻结UI?
val lv =
liveData (context=Dispatchers.Main){
var x = 0
while (true){
emit(x++)
delay(1000)
println(Thread.currentThread().name)
}
}
谢谢。
答案 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)
将阻塞线程,因此您的用户界面将被冻结。