ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

关于协程相关问题

关于协程相关问题 问题1在下面这段代码中coroutineScope 不是多余的它在这里是必要的。 你的理解中有一处关键混淆suspend 函数的“等待”是协程内部的挂起而 coroutineScope 的作用是为 launch/async 提供作用域并等待所有子协程完成。问题二在下面这段代码中 withContext(Dispatchers.IO)是不是多余了delay本来就是suspend函数本来在launch中就不会阻塞主线程。delay如果换成sleep效果是否还是相同lifecycleScope.launch(Dispatchers.Main){println(666-当前线程: ${Thread.currentThread().name})// ① 主线程withContext(Dispatchers.IO){// ② 挂起切到 IO 线程println(666-当前线程: ${Thread.currentThread().name})// ③ IO 线程delay(500)// ④ IO 线程等待 500msprintln(666-网络请求结果: xxx)// ⑤ IO 线程}// ⑥ 切回主线程恢复协程println(666-回到主线程: ...)// ⑦ 主线程}
返回列表