gpt4 book ai didi

android - 如何用 kotlin 1.1.0 kotlinx-coroutines-core lib 的特性替换 Anko 的 doAsync、uiThread?

转载 作者:IT老高 更新时间:2023-10-28 13:46:33 25 4
gpt4 key购买 nike

我有一些类似的代码:

doAsync{
...
uiThread{
...
}
}

如何用 kotlinx-coroutines-core lib 中的新内容替换 doAsync 和 uiThread?

最佳答案

协程库 0.26 版更新:

UI 已重命名为 Main。 0.26 的完整工作示例:

async(CommonPool) {
...
withContext(Main) {
...
}
}

您不需要从这里进一步阅读,我将把它留给对这个解决方案的发展感兴趣的人。


协程库 0.20 版更新:

run 现在已弃用,您应该改用 withContext。 0.20 的完整工作示例:

async(CommonPool) {
...
withContext(UI) {
...
}
}

协程库更新至 0.13 版后的更新:

您现在可以向您的 gradle 添加对 compile 'org.jetbrains.kotlinx:kotlinx-coroutines-android:0.13' 的依赖项,以导入特定于 android 的 UI协程上下文并像这样使用它:

async(CommonPool) {
...
run(UI) {
...
}
}

不再需要定义您自己的协程调度程序,因为在下面的原始答案时仍然需要。


原答案:

它应该像这样工作:

async(CommonPool) {
...
run(MainThread) {
...
}
}

问题在于,目前还没有 MainThread 的标准实现可以将您带回 Android 上的主线程(不过这将在未来的版本中出现!),所以您可以自己做,例如这样:

val MainThread = object : Executor {
private val mHandler = Handler(Looper.getMainLooper())

override fun execute(command: Runnable) {
mHandler.post(command)
}
}.toCoroutineDispatcher()

关于android - 如何用 kotlin 1.1.0 kotlinx-coroutines-core lib 的特性替换 Anko 的 doAsync、uiThread?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42628583/

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