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线程。

相关推荐
BoomHe9 小时前
Android Framework 文件应用移植到 AndroidStudio
android
传奇开心果编程10 小时前
【Jetpack Compose基础语法学与练】第8课 rememberSaveable,页面旋转/系统重建保留状态
android·学习·ui·kotlin·android jetpack
>Andre<10 小时前
UFS5.0标准中文全译·卷一:范围、术语与架构
android·linux·嵌入式硬件
事圆则缓11 小时前
Java 8 Lambda、Stream、Optional 与 Android 边界:从回调语法到运行时兼容
android·java
mmsx11 小时前
Android 地图十万要素不卡顿:空间网格 + 渐进式加载的移动端实践
android·大数据·opengl
Godikov13 小时前
Android 工业终端保活实战:前台服务 + 开机自启 + 更新自启的三重保障
android
字节暗面13 小时前
SO加固强度怎么量化?腾讯ACE与FairGuard静态分析实测
android·逆向
传奇开心果编程14 小时前
【Jetpack Compose基础语法学与练】第7课 if条件渲染 + 列表基础(LazyColumn)
学习·ui·kotlin·android jetpack
ai2work15 小时前
ch12 系统能力接入:TTS、剪贴板、分享、文件选择器
kotlin
终端安全笔记15 小时前
描述文件、企业证书、MDM 不是三个名字,是三层
android·ios·智能手机