kotlin 挂起函数2

再测试下挂起函数作用。定义函数:

Kotlin 复制代码
suspend fun requestNetworkSuspend(apiName: String): String {
    // 使用 withContext 切换到 IO 线程执行模拟网络请求
    return withContext(Dispatchers.IO) {
        Log.d("zxzx", "[$apiName] 模拟网络请求开始,线程:${Thread.currentThread().name}")
        // 模拟网络延迟
        delay(2000) // 模拟2秒网络响应时间
        Log.d("zxzx", "[$apiName] 模拟网络请求结束,线程:${Thread.currentThread().name}")

        // 模拟不同API返回不同数据
        when(apiName) {
            "接口1" -> "接口1响应数据"
            "接口2" -> "接口2响应数据"
            else -> "默认响应数据"
        }
    }
}

然后在onCreate方法中调用:

Kotlin 复制代码
lifecycleScope.launch {
            Log.d("zxzx", "Activity协程开始执行,线程:${Thread.currentThread().name}")
            val data = requestNetworkSuspend("接口1")
            Log.d("zxzx", "获取到data:${data}")
            Log.d("zxzx", "Activity协程再做其他事,线程:${Thread.currentThread().name}")
            Log.d("zxzx", "金麟岂是池中物, \n一遇风云便化龙。\n九霄龙吟惊天变,\n风云际会浅水游。")
        }
Log.d("zxzx", "onCreate方法结束执行,线程:${Thread.currentThread().name}")

运行,打印:

ok. 这样调用符合实际需要。而且也没阻塞main线程。

相关推荐
用户0934077735147 分钟前
HarmonyOS WPS Open SDK 实践:registerApp 鉴权与就绪门禁
android·typescript·harmonyos
jike_202613 分钟前
会议离线录音APP:无网络记录能力对比
android·智能手机·语音识别
always_TT1 小时前
【Python 字符串格式化:format() 方法】
android·开发语言·python
恋猫de小郭1 小时前
AI 时代,一个优化 Flutter 的重复代码工具 Deslop
android·前端·flutter
RisunJan2 小时前
Android 面试知识点整理
android·面试·职场和发展
脚踏实地,坚持不懈!2 小时前
Android ANR 内核底层全解析:从一次触摸到“应用无响应”
android·linux
xhBruce2 小时前
强制使用桌面模式 - SECONDARY_HOME -android-15.0.0_r23
android·launcher3
_祝你今天愉快13 小时前
从驱动来分析服务的添加过程
android
Dovis(誓平步青云)16 小时前
折叠屏悬停看视频,上半屏和下半屏应该各做什么
android·java·服务器·开发语言·安全·音视频
alexhilton17 小时前
让架构边界变成可执行的测试
android·kotlin·android jetpack