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

相关推荐
问心无愧051325 分钟前
ctf show web入门109
android·前端·笔记
xinhuanjieyi44 分钟前
Android 画板应用kotlin实现
android·开发语言·kotlin
故渊at1 小时前
第四板块:Android 输入系统与触控事件 | 第十六篇:按键分发与软键盘(IME)的窗口协同
android·软键盘·输入系统·触控事件·按键分发
故渊at1 小时前
第三板块:Android 图形渲染与窗口体系 | 第十四篇:View 绘制体系与 RenderThread 异步渲染
android·图形渲染·ui线程·renderthread·view体系
Coffeeee1 小时前
准备升级到Android16,自适应布局应该如何适配
android·google·kotlin
神仙别闹1 小时前
基于 PHP + MySQL 图书库存管理系统
android·mysql·php
zhangphil1 小时前
Android内存回收:GC、kswapd 和 mm_vmscan_direct_reclaim概述
android
plainGeekDev2 小时前
ContentProvider → Room + Repository
android·java·kotlin
plainGeekDev2 小时前
SQLite 手动升级 → Room Migration
android·java·kotlin