如何用kotlin 1.1.0 kotlinx-coroutines-core lib的功能替换Anko的doAsync,uiThread?

我有一些代码,如:

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

我怎么可以用kotlinx-coroutines-core lib中的新东西替换doAsync和uiThread?

从协程库更新到版本0.13后更新:

你现在可以添加一个依赖于compile 'org.jetbrains.kotlinx:kotlinx-coroutines-android:0.13'到你的gradle来导入特定于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()