kotlin 挂起函数

测试下挂起函数:

Kotlin 复制代码
// 1. 定义挂起函数(用suspend关键字修饰)
suspend fun suspendFunction(name: String, delayTime: Long) {
    Log.d("zxzx", "[$name] 挂起函数开始执行,当前线程:${Thread.currentThread().name}")

    // delay是Kotlin内置的挂起函数(核心:释放线程,不阻塞)
    delay(delayTime)

    Log.d("zxzx", "[$name] 挂起函数执行完毕,当前线程:${Thread.currentThread().name}")
}

// 2. 测试函数(Android环境可放在Activity/Fragment中,普通测试用main函数)
fun testSuspend() {
    Log.d("zxzx", "主线程开始,当前线程:${Thread.currentThread().name}")

    // 错误示例:普通函数中直接调用挂起函数 → 编译报错!
    // suspendFunction("错误测试", 1000L) // 编译提示:Suspend function 'suspendFunction' should be called only from a coroutine or another suspend function

    // 正确方式1:在runBlocking(协程作用域)中调用
    runBlocking {
        // 启动子协程调用挂起函数
        launch(Dispatchers.IO) {
            suspendFunction("测试1", 2000L)
        }
        launch(Dispatchers.Default) {
            suspendFunction("测试2", 1000L)
        }
    }

    // 正确方式2:Android中用lifecycleScope(推荐)
    // lifecycleScope.launch {
    //     suspendFunction("Android测试", 1500L)
    // }

    Log.d("zxzx", "主线程继续执行,当前线程:${Thread.currentThread().name}")
    Log.d("zxzx", "力拔山兮气盖世,\n时不利兮骓不逝。\n骓不逝兮可奈何,\n虞兮虞兮奈若何!")
}

在onCreate函数中调用testSuspend函数,打印:

ok. 这里好像没看出挂起有什么用。后面再继续研究。

相关推荐
小羊没烦恼!1 天前
初探性能优化——2个月到4小时的性能提升
java·开发语言·windows·算法·c#
千里马学框架1 天前
一起学 Android 14:ShellTransition 屏幕旋转过程深度剖析
android·智能手机·性能优化·framework·性能·屏幕旋转·rotation
美狐美颜SDK开放平台1 天前
开发直播APP时如何接入视频美颜SDK?开发流程与注意事项
android·人工智能·计算机视觉·音视频·直播美颜sdk
AFinalStone1 天前
Android7 SystemUI源码解析(七)Keyguard锁屏模块深度解析
android·systemui
伞伞悦读1 天前
【第38期】Python 模块与包详解:import、from、模块搜索路径、包结构和 __init__
开发语言·python
致远ccc1 天前
Google Play 上架前如何测试 App?多国家 Android 环境测试
android·app测试·googleplay·多国家应用测试
C语言小火车1 天前
C/C++ 为什么需要编译器?
开发语言·c++
霍霍的袁2 天前
【C++】map 和 set 的使用 | 从用法到底层
开发语言·c++·学习·visual studio
ttyyttemo2 天前
Kotlin 协程中的 Job 结构化并发与取消
android
孙启超2 天前
【AI开发之Rust】第 11 课:智能指针与内部可变性
开发语言·后端·rust