Kotlin协程简介
- 人工智能
- 2025-08-16 12:18:01

文章目录 官网地址1 来源2 出现原因3 特点1) 轻量2)内存泄漏更少3)内置取消支持4)Jetpack 集成 4 依赖项信息5 在后台线程中执行6 使用协程确保主线程安全7 处理异常 官网地址
developer.android.google /kotlin/coroutines?hl=zh-cn
1 来源 协程是一种并发设计模式,您可以在 Android 平台上使用它来简化异步执行的代码。协程是在版本 1.3 中添加到 Kotlin 的,它基于来自其他语言的既定概念。 2 出现原因 在 Android 上,协程有助于管理长时间运行的任务,如果管理不当,这些任务可能会阻塞主线程并导致应用无响应。使用协程的专业开发者中有超过 50% 的人反映使用协程提高了工作效率。 3 特点 1) 轻量 您可以在单个线程上运行多个协程,因为协程支持挂起,不会使正在运行协程的线程阻塞。挂起比阻塞节省内存,且支持多个并行操作 2)内存泄漏更少 使用结构化并发机制在一个作用域内执行多项操作 3)内置取消支持 取消功能会自动通过正在运行的协程层次结构传播 4)Jetpack 集成 许多 Jetpack 库都包含提供全面协程支持的扩展。某些库还提供自己的协程作用域,可供您用于结构化并发 4 依赖项信息 dependencies { implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.9") } 5 在后台线程中执行 网络请求发出时阻塞界面线程。如需将执行操作移出主线程,最简单的方法是创建一个新的协程,然后在 I/O 线程上执行网络请求 class LoginViewModel( private val loginRepository: LoginRepository ): ViewModel() { fun login(username: String, token: String) { // Create a new coroutine to move the execution off the UI thread viewModelScope.launch(Dispatchers.IO) { val jsonBody = "{ username: \"$username\", token: \"$token\"}" loginRepository.makeLoginRequest(jsonBody) } } } 6 使用协程确保主线程安全使用协程库中的 withContext() 函数将协程的执行操作移至其他线程
由于 makeLoginRequest 将执行操作移出主线程,login 函数中的协程现在可以在主线程中执行
login 函数现在按以下方式执行
应用从主线程上的 View 层调用 login() 函数launch 在主线程上创建新协程,然后协程开始执行在协程内,调用 loginRepository.makeLoginRequest() 现在会挂起协程的进一步执行操作,直至 makeLoginRequest() 中的 withContext 块结束运行withContext 块结束运行后,login() 中的协程在主线程上恢复执行操作,并返回网络请求的结果 7 处理异常为了处理 Repository 层可能抛出的异常,请使用 Kotlin 对异常的内置支持。在以下示例中,我们使用的是 try-catch 块
class LoginViewModel( private val loginRepository: LoginRepository ): ViewModel() { fun makeLoginRequest(username: String, token: String) { viewModelScope.launch { val jsonBody = "{ username: \"$username\", token: \"$token\"}" val result = try { loginRepository.makeLoginRequest(jsonBody) } catch(e: Exception) { Result.Error(Exception("Network request failed")) } when (result) { is Result.Success<LoginResponse> -> // Happy path else -> // Show error in UI } } } }Kotlin协程简介由讯客互联人工智能栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“Kotlin协程简介”
上一篇
C语言中的3种注释方法