Котлин корутины, есть ли что-то по красивее чем withContext(Dispatchers.Main)?
Есть код в android приложении:
GlobalScope.launch {
val res = // что-то очень сложное...
withContext(Dispatchers.Main) {
// Взаимодействие с view
}
}
Я недавно работаю на котлине, и мне интересно есть ли в данном конкретном случае более простое и удобное решение чем withContext? А то из-за него иногда выходит слишком много отступов. P.S. Если есть какие-нибудь хорошие и подробные статьи по котлину, поделитесь пожалуйста.
Ответы (1 шт):
Автор решения: Vadik
→ Ссылка
Диспетчер по-умолчанию можно определить в контексте корутины, для этого нужно реализовать интерфейс CoroutineScope в вашей активити, презентере или viewmodel (в зависимости от вашего архитектурного подхода).
Для примера, как это можно сделать в активити:
class MainActivity : AppCompatActivity(), CoroutineScope {
override val coroutineContext: CoroutineContext
get() = Dispatchers.Main
override fun onStart() {
super.onStart()
launch {
println("Current thread is ${Thread.currentThread().name}")
}
}
}
GlobalScope при этом использовать не нужно.