Kotlin协程学习之-02

协程的基本使用

GlobalScope.launch

生命周期与进程一致,且无法取消

runBlocking

会阻塞线程,一般在测试阶段可以使用

val coroutineScope = CoroutineScope(context)

coroutineScope.launch

通过context参数去管理和控制协程的生命周期

用法

val coroutineScope = CoroutineScope(context)

coroutineScope.launch(Dispatchers.IO) {

通过Dispatchers.IO参数把任务切换到IO线程执行

}

coroutineScope.launch(Dispatchers.Main) {

通过Dispatchers.Main参数把任务切换到Main线程执行

}

使用withContext方法

该方法可以切换到指定线程,并在闭包内的逻辑执行结束后,自动把线程切换回去继续执行

corountineScope.launch(Dispatchers.Main) {

val image = withContext(Dispatchers.IO) {

getImage(imageId)

}

}

使用launch、async等方法创建的协程,在执行到某个suspend方法时会从正在执行它的线程上脱离,互相脱离后的线程和协程会分别执行不同的任务。

使用suspend标记的方法,只能执行在协程代码块中。

获取协程的返回值

协程是一种异步概念,需要一些特殊操作才能获取返回值。方法如下

async / await

主要流程是使用async开启协程,然后调用async返回的Defered对象的await方法获取协程运算的结果。

跟launch相比,async是带返回值的。

相关推荐
Kapaseker13 小时前
一杯美式搞懂 Any、Unit、Nothing
android·kotlin
Kapaseker2 天前
一杯美式搞定 Kotlin 空安全
android·kotlin
FunnySaltyFish2 天前
什么?Compose 把 GapBuffer 换成了 LinkBuffer?
算法·kotlin·android jetpack
Kapaseker3 天前
Compose 进阶—巧用 GraphicsLayer
android·kotlin
Kapaseker3 天前
实战 Compose 中的 IntrinsicSize
android·kotlin
A0微声z5 天前
Kotlin Multiplatform (KMP) 中使用 Protobuf
kotlin
alexhilton6 天前
使用FunctionGemma进行设备端函数调用
android·kotlin·android jetpack
lhDream6 天前
Kotlin 开发者必看!JetBrains 开源 LLM 框架 Koog 快速上手指南(含示例)
kotlin
RdoZam6 天前
Android-封装基类Activity\Fragment,从0到1记录
android·kotlin
Kapaseker7 天前
研究表明,开发者对Kotlin集合的了解不到 20%
android·kotlin