Допустим, вы в WorkerThread
выполняете долгосрочное задание.Но, чтобы завершить эту долгосрочную задачу, вы должны получить что-то из UI Thread
.
. В основном мне нужен доступ к UI Thread , которыйсгенерирует объект, который ДОЛЖЕН быть инициализирован в потоке пользовательского интерфейса, но затем может использоваться в любом потоке.
Что я хотел бы сделать, это, возможно, использовать сопрограммы / приостановленные функции, где рабочий поток фактически ожидает операции надпоток пользовательского интерфейса завершается.
Как мне этого добиться?Спасибо!
Ниже представлена схема того, чего я намерен достичь:
@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
}
Надеюсь, это поможет.