launch是最常用的启动协程方式,它会立即返回一个Job对象,后台执行协程任务如果在启动协程时使用了try-catch,那么异常会被try-catch块捕获。如果没有捕获,异常会传递给未捕获异常处理器进行处理 应用场景:如果需要启动一个独立协程,并且不关心其结果或异常,最好使用launch。 示例: fun main() { GlobalScope.launch { ...
通过上面的测试,我们可以得出结论,launch函数和async函数启动的协程是并行执行的,并且启动协程之后会立马往下执行,不会等待协程完成,除非调用join或await函数。launch函数和async函数的唯一区别就是async函数启动的协程有返回值,如果不需要获取协程的执行结果,那么没必要用async函数。 4.withContext函数的作用 官方框架中还为...
一手遮天 Android - kotlin 协程: 协程基础(CoroutineScope, 为 CoroutineScope 扩展方法, runBlocking, launch, async, await, suspend, withContext, 设置/获取 CoroutineScope 的名称) 示例如下: /kotlin/coroutine/Demo1.kt /** * coroutine - 协程 * 本利用于演示协程基础,包括 CoroutineScope, 为 CoroutineSco...
suspend:申明这是个可挂起的函数,里面可以用协程的一下方法(launch()、async()、withContext()等)。 如果切换线程中的代码很多,想把(withContext(){...})的代码抽出来。于是写成这样 代码语言:javascript 代码运行次数:0 运行 AI代码解释 fun getToken(): String { return withContext(Dispatchers.Default) { ...
launch (Dispatchers.Main){ val result1 = withContext(Dispatchers.IO) { delay(2000) Log.d("test", "1协程执行—${Thread.currentThread().name}_id_${Thread.currentThread().id}") } val result2 = withContext(Dispatchers.IO) { delay(1000) Log.d("test", "2协程执行— ${Thread....
kotlin之协程(二),Kotlin协程是什么、挂起是什么、挂起的非阻塞式 kotlin之协程(三),开始创建协程,launch,withContext kotlin之协程(四),协程的核心关键字suspend kotlin之协程(五),launch 函数以及协程的取消与超时 kotlin之协程(七),协程中relay、yield 区别 launch 函数定义:async 函数定义:从源码可以...
kotlin协程withContext的使用 简介:kotlin协程withContext的使用 众所周知,async和launch是启动协程的两种方式。由于我们知道async是用来取回结果的,所以只有当我们需要并行执行时才应该使用&,而launch则是当我们不想取回结果时使用,用于更新等操作我们知道,到目前为止,异步是启动协程并返回结果的唯一方法,但是当我们不想进行...
//launch 表示开启一个协程 launch(Dispatchers.Main) { //同步代码块的方式实现异步操作val username = async { loadUser() } val motto = async { loadUserMotto() } nameTextView.text = username mottoTextView.text = motto } 上面的代码暂时不需要看懂,这里只是举个例子,让大家直观感受一下协程中这个...
withContext kotlin 中 GlobalScope 类提供了几个创建协程的构造函数: launch: 创建协程 async : 创建带返回值的协程,返回的是 Deferred 类 withContext:不创建新的协程,指定协程上运行代码块 runBlocking:不是 GlobalScope 的API,可以独立使用,区别是 runBlocking 里面的 delay 会阻塞线程,而 launch 创建的不会 ...
withContext不会创建新的协程。withContext类似runBlocking,它的最后一行的值即为withContext的返回值,而且会阻塞上下文线程,通过Dispathcers来指定代码块运行的线程 withContext不像launch、async的context参数都是默认参数,并且使用默认值EmptyCoroutineContext。 withContext的context参数必须传值,它是CoroutineContext类型的。在使...