async使用样例 var job = GlobalScope.launch (Dispatchers.Main){ val result1 = async(Dispatchers.IO) { delay(2000) Log.d("test", "1协程执行—${Thread.currentThread().name}_id_${Thread.currentThread().id}") } val result2 = async(Dispatchers.IO) { delay(1000) Log.d("test", "2协程...
一手遮天 Android - kotlin 协程: 协程基础(CoroutineScope, 为 CoroutineScope 扩展方法, runBlocking, launch, async, await, suspend, withContext, 设置/获取 CoroutineScope 的名称) 示例如下: /kotlin/coroutine/Demo1.kt /** * coroutine - 协程 * 本利用于演示协程基础,包括 CoroutineScope, 为 CoroutineSco...
SupervisorJob 、 Job 可以在开启一个协程时设置任务类型,默认开启一个协程方式为 launch(){...} 内部实现为Job(coroutineContext[Job]),也可以通过 launch(SupervisorJob(coroutineContext[Job])) { } , async(SupervisorJob(coroutineContext[Job])) { } 方式指定Job类型,它的...
在一个常规函数启动协程,通常使用的是launch,因为常规函数无法调用Deferred::await,在一个协程或者挂起函数内部开启协程可以使用async。 launch(返回Job)与async(返回Deferred)的区别: launch启动的协程没有返回结果;async启动的协程有返回结果,该结果可以通过Deferred的await方法获取。 launch启动的协程有异常会立即抛出;asy...
async:启动新协程,async的返回值为Deferred,Deferred继承至Job,可通过调用Deferred::await获取协程的执行结果,其中await是挂起函数。 在一个常规函数启动协程,通常使用的是launch,因为常规函数无法调用Deferred::await,在一个协程或者挂起函数内部开启协程可以使用async。
coroutineScope.launch(Dispatchers.Main) { valavatar=async{api.getAvatar(user) }// 获取用户头像 vallogo=async{api.getCompanyLogo(user) }// 获取用户所在公司的 logo valmerged=suspendingMerge(avatar,logo)// 合并结果 show(merged)// 更新 UI ...
协程最简单的使用,我们可以使用GlobalScope.launch去开启一个协程代码如下所示: GlobalScope.launch { Log.d(TAG, Thread.currentThread().name) } 运行结果如下所示: 说明这段代码是运行在一个子线程中的,当然我们可以在launch中传递参数,让他运行在主线程中: GlobalScope.launch(Dispatchers.Main) { Log.d(TAG,...
首先,创建一个协程的方式有很多种,可以通过 runBlocking,launch (CoroutineScope.lauch / GlobalScope.lauch),withContext ,async 等这些方法来都能创建协程,这些都是我们可能会在协程里用到的常见方法。关于这几个有什么的区别,下面给它大概归为这几类分别进行简单的对比 : ...
async和withContext都可以返回耗时任务的执行结果。 多个async 任务是并行的,async 返回的是一个Deferred<T>,需要调用await()方法获取结果。 多个withContext 任务是串行的, 且withContext 可直接返回耗时任务的结果。 例1 先来看下在协程内,用普通的方式,计算两数之和,并统计所需时间。
KT-23775 IntelliJ plugin: improve "accessor call that can be replaced with property" KT-24235 Inspection to replace async.await with withContext KT-24263 Add Make variable immutable quickfix for const KT-24433 Inspection for coroutines: unused async resultPerformance...