executeTraderOperation()
вызывается в главном потоке приложения, любезно предоставлено onClick()
. Затем вы создаете некоторый код для фонового потока, любезно предоставленный GlobalScope.launch(Dispatchers.IO)
. Затем вы возвращаете executions
, который еще не был инициализирован кодом в фоновом потоке ... следовательно, сбой.
Перепишите это как:
suspend fun executeTraderOperation(traderOperation: Trader.Operation, base: String, quote: String): Response<Void> = withContext(Dispatchers.IO) {
longOperation(traderOperation, base, quote)
}
Затем имейте doClickStart()
на AddTraderViewModel
, звоните executeTraderOperation()
в подходящей области:
fun doClickStart() {
viewModelScope.launch(Dispatchers.Main) {
val response = longOperation(traderOperation, base, quote)
TODO("do something with response")
}
}
(это предполагает, что AddTraderViewModel
- это AndroidX ViewModel
и что у вас есть зависимость -ktx
, чтобы дать вам viewModelScope
)