关于协程相关问题

问题1

在下面这段代码中,coroutineScope 不是多余的,它在这里是必要的。 你的理解中有一处关键混淆:suspend 函数的"等待"是协程内部的挂起,而 coroutineScope 的作用是为 launch/async 提供作用域并等待所有子协程完成。

问题二

在下面这段代码中 withContext(Dispatchers.IO)是不是多余了,delay本来就是suspend函数,本来在launch中就不会阻塞主线程。delay如果换成sleep效果是否还是相同?

java 复制代码
lifecycleScope.launch(Dispatchers.Main) {
    println("666-当前线程: ${Thread.currentThread().name}")   // ① 主线程
    withContext(Dispatchers.IO) {                            // ② 挂起,切到 IO 线程
        println("666-当前线程: ${Thread.currentThread().name}") // ③ IO 线程
        delay(500)                                           // ④ IO 线程等待 500ms
        println("666-网络请求结果: xxx")                      // ⑤ IO 线程
    }                                                        // ⑥ 切回主线程,恢复协程
    println("666-回到主线程: ...")                            // ⑦ 主线程
}
相关推荐
wdfk_prog1 小时前
Wi-Fi Direct 教程 04:Interface 协议子系统初始化——WPA/EAPOL、WPS、DPP/NAN、GAS 与 P2P callback
android·运维·服务器·ubuntu·p2p·wps·wifi-direct
警醒与鞭策10 小时前
【无标题】
android·unity·性能优化·游戏引擎·perforce
传奇开心果编程11 小时前
【Jetpack Compose进阶学与练】第14课:系列收尾复习总结;Compose项目常见坑点汇总;学习路线与后续学习方向
android·学习·ui·kotlin·android jetpack
李游Leo14 小时前
《HarmonyOS 7 精准碰一碰跨设备协作开发实战》07:异常恢复、状态机与CrossDrop工程收尾【鸿蒙心迹】
android·harmonyos
方白羽17 小时前
Android APK安全防护
android·安全·apk
小黄人软件17 小时前
AndroidStudio老项目 macOS运行BlueTooth蓝牙串口助手(Android+Studio源码).rar
android·macos
00后程序员张17 小时前
苹果App Store上架指南:费用、原理与步骤详解
android·ios·小程序·https·uni-app·iphone·webview
天神哥哥啊17 小时前
cocos联调注意事项-安卓
android
TDengine (老段)17 小时前
TDengine TSDB 实战排障四(升级与兼容)
android·java·大数据·数据库·物联网·时序数据库·tdengine