gpt4 book ai didi

android - Android : Why use bg() from Anko instead of async()? 中的 Kotlin 协程

转载 作者:搜寻专家 更新时间:2023-11-01 09:31:04 25 4
gpt4 key购买 nike

我今天开始在 Android 上使用 Kotlin 协程,我注意到 Anko 有自己的一组辅助方法。我明白为什么 asReference() 存在,但我不明白为什么 bg() 存在,因为核心协程库已经有 async().

bg() 代码非常简单,里面使用了async():

@PublishedApi
internal var POOL = newFixedThreadPoolContext(2 * Runtime.getRuntime().availableProcessors(), "bg")

inline fun <T> bg(crossinline block: () -> T): Deferred<T> = async(POOL) {
block()
}

那么用bg()代替async()有什么好处呢? async() 是否在某种程度上对 Android 应用程序效率低下?

最佳答案

如您所见,bg 使用POOL 作为它的CoroutineDispatcher,阅读它 here .

基本上这个函数的存在只是为了包装执行这些任务的池。直接使用 async 需要您提供一个。所以最终保证通过bg启动的每个任务都在同一个池中执行。

关于android - Android : Why use bg() from Anko instead of async()? 中的 Kotlin 协程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47326022/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com