作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我今天开始在 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/
我是一名优秀的程序员,十分优秀!