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

相关推荐
DogDaoDao4 小时前
Android 播放器开发:从零构建全功能视频播放器
android·ffmpeg·音视频·播放器·mediacodec·编解码
Kapaseker4 小时前
Kotlin 的 SAM 到底解决了什么?
kotlin
真鬼1235 小时前
【Unity安卓】Unity 嵌入 Android Studio 完整流程
android·unity·android studio
星间都市山脉5 小时前
Windows 环境 Android 系统 APK 签名操作文档
android·windows
shuaiqinke5 小时前
【分享】OrbitV工具箱| 手表手环全能适配 |表盘应用一键装
android·智能手机
子非吾喵5 小时前
HBuilder X本地打包的资源放到Android Studio本地打包的记录
android·ide·android studio
simplepeng16 小时前
我们都知道但总是忽略的5个Jetpack Compose细节
android·android jetpack
刮风那天17 小时前
Android 如何提高进程优先级避免被查杀?
android
修行者对66618 小时前
安卓阿里云镜像
android