Котлин корутины, есть ли что-то по красивее чем 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 при этом использовать не нужно.

→ Ссылка