Kotlin协程调度程序,例如Default,但没有主(UI)线程

时间:2019-04-12 08:26:12

标签: android kotlin kotlin-coroutines

是否有一种方法可以在Android上创建(或以某种方式获取)Kotlin协程分派器,其功能类似于Default,但不涉及触摸UI线程核心?

因此,基本上,我面临着繁重的计算任务,我想使用尽可能多的CPU资源来处理这些任务,而又不影响UI性能。

通过Dispatchers.Default,我可以从系统中获取最多的资源,但与此同时,我的UI却变得更慢。

这里可以应用哪些最佳实践?

2 个答案:

答案 0 :(得分:0)

您可以使用具有自定义线程池的调度程序,如下所示:

val threads = 4
val dispatcher = Executors.newFixedThreadPool(threads).asCoroutineDispatcher()

答案 1 :(得分:0)

我发现,我的问题解决方案不是在JVM领域,而是在NDK中。本地库正在将CPU加载到100%,基本上,我似乎无法从Java / Kotlin做到这一点。答案似乎在C代码中某个地方,这超出了我的能力。

我还必须提到Executors.newFixedThreadPool((Runtime.getRuntime().availableProcessors() - 1).coerceAtLeast(1)).asCoroutineDispatcher()解决方案。在我看来,这对于遇到类似问题的人可能会有帮助。