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

相关推荐
kyle~2 小时前
MySQL基础知识点与常用SQL语句整理
android·sql·mysql
XiaoLeisj2 小时前
Android RecyclerView 实战:从基础列表到多类型 Item、分割线与状态复用问题
android·java
zh_xuan2 小时前
kotlin async异步协程构建器
android·kotlin·协程
阿林来了2 小时前
Flutter三方库适配OpenHarmony【flutter_web_auth】— Android 端 Chrome Custom Tabs 实现分析
android·chrome·flutter
zh_xuan4 小时前
kotlin Channel的用法
android·kotlin·协程·channel
zh_xuan4 小时前
kotlin Flow的用法
android·开发语言·kotlin·协程·flow
普通网友11 小时前
Android Jetpack 架构组件最佳实践之“网抑云”APP
android·架构·android jetpack
普通网友11 小时前
原创_Android Jetpack Compose 最全上手指南
android·android jetpack
FDoubleman11 小时前
Android Jetpack之Compose入门(一)
android·android jetpack