如何用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()