挺讨厌这门喜欢装怪的语言的,很多现成的语法不用,非要装怪整些新语法,还强制大家用。比其dart就差太多了。
但是java老是不改进,Android非要选这个,也不得不用。
只能取其精华,多个语言多条路了。
suspendCoroutine
是一个用于将回调风格的代码转换为挂起函数的工具。它允许你在挂起函数中暂停执行,直到某个回调被调用。
线程关系
Kotlin 的协程是线程无关的。
指定了调度器,就是调度器线程。没有指定,就是启动的那个线程。
回调线程:suspendCoroutine 内部的回调是原始启动线程或者你自己回调时,切换到的那个线程。
指定调度器方法:
withContext(Dispatchers.IO) {
suspendCoroutine { conti
…
}
suspendCancellableCoroutine主要是支持取消通知,以便做一些处理,其它区别不大。不需要取消处理就不用管。
lifecycleScope.launch 的线程行为如下:
默认线程:
如果没有指定调度器(Dispatcher),lifecycleScope.launch 默认运行在 主线程(UI 线程),因为它继承自 Dispatchers.Main。