【发布时间】:2019-09-25 12:05:29
【问题描述】:
假设您在WorkerThread 中执行一项长时间运行的任务。但是,为了完成上述长时间运行的任务,您必须从UI Thread 获取一些东西。
基本上,我需要访问 UI 线程,它将生成一个对象,该对象必须在 UI 线程上初始化,然后可以在任何线程中使用。
我想做的可能是使用协程/挂起函数,其中工作线程实际上等待 UI 线程上的操作完成。
我怎样才能做到这一点?谢谢!
以下是我打算实现的架构:
@WorkerThread
fun processTask() {
// ... do some stuff to init work
val something = getSomethingFromUiThread() // wait
// ... resume & complete stuff with "something"
}
@MainThread
suspend fun getSomethingFromUiThread() {
// ... create object on UI Thread
// ... return initialized object to the worker thread
}
希望对你有帮助。
【问题讨论】:
标签: android multithreading kotlin kotlin-coroutines